Каква е разликата между UnauthorizedException и OAuthRequestException в облачните крайни точки?

В Cloud Endpoints разбирам, че когато правя OAuth, трябва да проверя дали user == null, за да определя дали даден потребител се е удостоверил. В случай, че потребителят е нула, трябва да хвърля изключение. В примерни кодови фрагменти на Google Cloud Endpoints обаче видях да се използват две различни изключения.

В документацията за OAuth за крайни точки в облака се казва да се хвърли OAuthRequestException. Виждал съм обаче други кодови бази (включително Курс Udacity) throw UnauthorizedException.

Забелязах, че OAuthRequestException не се простира от com.google.api.server.spi.ServiceException, така че мисля, че UnauthorizedException е правилният избор?

Кое да използвам?


person sthomps    schedule 13.08.2014    source източник


Отговори (1)


Бих се придържал към класа UnauthorizedException' since it extends from theServiceException`. Съгласно документацията на https://developers.google.com/appengine/docs/java/endpoints/exceptions и от най-добрите практики на API, препоръчително е да картографирате изключенията по такъв начин, че да се хвърля правилният HTTP код на състоянието.

Така че в случая на UnauthorizedException се хвърля HTTP 401.

Това е, което обикновено правя в кода си и вярвам (и което можете да опитате!), че ще видите стандартен улавяне на всички HTTP кодове за грешки, които се връщат обратно, в случай че хвърляте изключения като OAuthRequestException, които не разширяват ServiceException (HTTP 503 или HTTP 500)

person Romin    schedule 13.08.2014