Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Валидация “REST” API по документации APIB

Валидация “REST” API по документации APIB

Avatar for Dmitry Efimov

Dmitry Efimov

February 15, 2018
Tweet

More Decks by Dmitry Efimov

Other Decks in Programming

Transcript

  1. Эспланада — широкое открытое пространство перед крепостью. Чтобы затруднить нападение

    на крепость, пространство перед ней оставляли открытым, вырубая все деревья и запрещая строить дома. Из-за этого войска противника не могли приблизиться к крепости незамеченными или укрыться от обстрела.
  2. и напишем документацию # Backend ## Users [/users] ### To

    viewing [GET] + Request (application/json) + Attributes + name (string, required) + Response 200 (application/json)
  3. 2 кейс тело запроса не json curl -v -X GET

    http://localhost: 3000/users -d name=Dima
  4. ESPLANADE SKIP: #<Esplanade::Request::BodyIsNotJson: {:method=>"GET", :path=>"/ users", :body=>"name=Dima"}> Processing by UsersController#index

    as */* Parameters: {"name"=>"Dima"} Completed 200 OK in 0ms (Views: 0.2ms) ESPLANADE SAYS THAT THE RESPONSE IS VALID
  5. 3 кейс тело запроса не валидно curl -v -X GET

    http://localhost:3000/users - d '{"name": 1}'
  6. ESPLANADE SKIP: #<Esplanade::Request::Invalid: {:method=>"GET", :path=>"/users", :body=>"{\"name\": 1}", :error=>["The property '#/name'

    of type integer did not match the following type: string in schema d273bcdd-74f5-5e93-968b-49eb22dd5bc0"]}> Processing by UsersController#index as */* Parameters: {"{\"name\": 1}"=>nil} Completed 200 OK in 0ms (Views: 0.2ms) ESPLANADE SAYS THAT THE RESPONSE IS VALID
  7. ESPLANADE SAYS THAT THE REQUEST IS VALID Processing by UsersController#index

    as */* Parameters: {"{\"name\": \"Dima\"}"=>nil} Completed 200 OK in 0ms (Views: 0.1ms) ESPLANADE SAYS THAT THE RESPONSE IS VALID
  8. не потерять контроль над API прозрачность (sentry, grafana) понятность Documentation-Driven

    Development полное соответствие реализации документации