جاوا و تکنولوژی های آن

java programming language

در این وبلاگ به بررسی نکات موجود در جاوا و تکنولوژی های آن می پردازیم

طبقه بندی موضوعی


در این بخش به راه های ارسال کد های وضعیت Http به کلاینت را بررسی میکنیم. گاهی لازم است که این کدها بصورت خاص توسط خود ما تعیین شوند و کلاینت را از وضعیت پاسخ ارسالی با خبر کنیم 


برای ست کردن کد وضعیت در Spring MVC چند راه حل وجود دارد :


- کلاس ResponseEntity

- ResponseStatus@

- ControllerAdvice@

- ExceptionHandler@

این گزینه ها منحصر بفرد نیستند و بسته به نوع کاربرد میتوانند به تنهایی یا ترکیبی از آنها استفاده شوند 


استفاده از کلاس ResponseEntity :

@RequestMapping(value = "/controller", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity sendViaResponseEntity() {
    return new ResponseEntity(HttpStatus.NOT_ACCEPTABLE);
}

موقعی که خطایی در حین پردازش درخواست ایجاد شود لازم است که کد وضعیت مناسب ارسال گردد و اگر پردازش درخواست همراه با خطا نبود باید کد وضعیت عادی را ارسال کنیم 


@RequestMapping(value = "/exception", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity sendViaException() {
    throw new ForbiddenException();
}

کد بالا را طوری در نظر گرفتیم که با دریافت درخواست تولید خطا کند و حالا میخواهیم برای این خطا ایجاد شده کد وضعیت مناسب را در زیر ارسال کنیم :

@ResponseStatus(value = HttpStatus.FORBIDDEN, reason="To show an example of a custom message")
public class ForbiddenException extends RuntimeException {}

وقتی درخواست به exception/ ارسال شد کنترلر یک خطا از نوع ForbiddenException پرتاب میکند که کنترلر وظیفه ارسال Response را به ForbiddenException میسپارد که بدون اینکه نیازی به نوشتن کد اضافی داشته باشیم با استفاده از ResponseStatus@ کد وضعیت 406 به کاربر ارسال خواهد شد این روش بصورت global عمل میکند و تمامی خطا ها از نوع ForbiddenException به این کلاس میرسند

همچنین میتوانیم علت ایجاد این خطا را در reason شرح دهیم که برای کاربر قابل نمایش خواهد بود




روش ControllerAdvice@ را در بخش خطا های REST توضیح داده میشود



نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی