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

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

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

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 полное соответствие реализации документации