|
Посоветуйте букварь по REST
|
|||
---|---|---|---|
#18+
Возникла такая задача. Есть некоторая закрытая информационная система, используемая фирмой для ее деятельности. Система доступна только в интранете. Есть сайт, который делает студия. Сайту нужна определенная информация с этой закрытой информационной системы. Прямого доступа к ней давать нельзя, вместо этого будет подготовлен шлюз, к которому будет обращаться сайт и для которого шлюз будет готовить нужные данные. Собственно, пока что нужно всего четыре метода, причем они будут выполняться относительно нечасто. Но при этом, как это часто бывает, в будущем может потребоваться развитие этого шлюза. Поэтому нужно заложить версионность и подходящую архитектуру. Мне проще всего этот шлюз как REST-сервис на PHP. При этом не хотелось бы изобретать велосипеды и делать архитектурные ошибки. Но и какой-нибудь большой и сложный фреймворк тоже не нужен, я в нем разбираться буду слишком долго. Не посоветуете, где можно почитать в общих чертах, как это делается, и посмотреть несложные примеры? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2019, 12:57 |
|
Посоветуйте букварь по REST
|
|||
---|---|---|---|
#18+
Как-то не очень представляю себе учебник по rest. Тут собственно одного понимания что это такое хватает. Ну если хочешь учебник возьми любой по HTTP например - самый rest из всех rest'ов :) Да и автор rest (не помню как его звать) описал эту фигню параллельно работая над спецификацией HTTP 1.1. А архитектурные ошибки... Ну пожалуй единственная ошибка которую я могу себе представить это разнородность стилей запросов. Например можно сделать запросов клиентов через GET .../getclients&name%20like%20..... И рядышком запрос товаров через POST ../getstuff а параметры запроса передавать как json в теле post-запроса. Что самое смешное это даже не ошибка, работаю с такими системами и сейчас, но раздражает когда пишешь к ним первого клиента. Потом превращаешь отдельные запросы в функции/классы/компоненты/итп и забываешь о самих запросах. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 00:10 |
|
Посоветуйте букварь по REST
|
|||
---|---|---|---|
#18+
У меня вопрос не столько по формированию и обработке http-заголовков и содержимого, сколько об общепринятых соглашениях. object/command или command/object? Когда возвращать ошибку в http-статусе, а когда в теле ответа? Успешный запрос всегда возвращать со статусом 200 или по контексту? Это все вопросы скорее общепринятых соглашений. Есть такие? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 09:56 |
|
Посоветуйте букварь по REST
|
|||
---|---|---|---|
#18+
тебе нужен api-guidelines: Пример от microsoft: https://github.com/Microsoft/api-guidelines/blob/vNext/Guidelines.md ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 20:59 |
|
Посоветуйте букварь по REST
|
|||
---|---|---|---|
#18+
Спасибо, почитаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 22:38 |
|
Посоветуйте букварь по REST
|
|||
---|---|---|---|
#18+
Bspleskтебе нужен api-guidelines: Пример от microsoft: https://github.com/Microsoft/api-guidelines/blob/vNext/Guidelines.md О! Про них то я и забыл. Это яркий пример как не надо делать API. Меня там особенно убивают утверждения что client MUST do such and such. С чего это вдруг клиент что-то должен??? Это сервер должен предоставить данные в ответ на запрос в однозначно интерпретируемом формате. А уж поймет ли клиент ответ или нет... Как собственно говоря сервер на это может повлиять??? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2019, 02:15 |
|
Посоветуйте букварь по REST
|
|||
---|---|---|---|
#18+
Alibek B.У меня вопрос не столько по формированию и обработке http-заголовков и содержимого, сколько об общепринятых соглашениях.Так никто и не предлагает самому использовать http, Просто это самый древний и известный из ныне использующихся API следующих REST принципам.. Alibek B.object/command или command/object?Это совершенно не важно. Встречал и то и другое, проблем особых нет ни в одном из случаев. С другой стороны, лично мне более по вкусу третий подход, с выносом всего что нужно в тело POST запроса. Этот подход ИМХО легче модернизировать и расширять. Да и намного больше параметров для команды можно передать. Alibek B. Когда возвращать ошибку в http-статусе, а когда в теле ответа? Успешный запрос всегда возвращать со статусом 200 или по контексту?Смотря какую ошибку. Просто учитывай что твой API будет использоваться из браузера и браузер может (и скорее всего будет) перехватывать http кода. Так что никаких 404 или 500 на нормальные обрабатываемые ошибки. Но авторизацию вполне можно делать через 401/403, особенно если у вас в конторе имеется выделенный SSO сервер и клиент должен к нему зайти для начала работы. Alibek B.Это все вопросы скорее общепринятых соглашений. Есть такие?Увы. Спецификации писались только для конкретных протоколов. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2019, 02:39 |
|
Посоветуйте букварь по REST
|
|||
---|---|---|---|
#18+
Я примерно так и делал. Спасибо за ссылки, у MS гайдлайн мне понравился, возьму его за основу. Ошибки http я возвращаю только если запрос нельзя полноценно обработать, иначе всегда возвращаю json. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2019, 08:40 |
|
Посоветуйте букварь по REST
|
|||
---|---|---|---|
#18+
White OwlС чего это вдруг клиент что-то должен??? Это сервер должен предоставить данные в ответ на запрос в однозначно интерпретируемом формате. А уж поймет ли клиент ответ или нет... Как собственно говоря сервер на это может повлиять??? Хотя бы с того, что клиент отправляет запрос серверу и он должен быть понятным. Если он будет всякую ерунду на сервер отправлять, глупо, наверное, надеяться, что сервер ему должен что-то вразумительное отвечать. Не так ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2019, 10:28 |
|
Посоветуйте букварь по REST
|
|||
---|---|---|---|
#18+
HettWhite OwlС чего это вдруг клиент что-то должен??? Это сервер должен предоставить данные в ответ на запрос в однозначно интерпретируемом формате. А уж поймет ли клиент ответ или нет... Как собственно говоря сервер на это может повлиять??? Хотя бы с того, что клиент отправляет запрос серверу и он должен быть понятным. Если он будет всякую ерунду на сервер отправлять, глупо, наверное, надеяться, что сервер ему должен что-то вразумительное отвечать. Не так ли?Не так. Если сервер получил ерунду в запросе, то он отвечает "не понял запрос" и все. Это вполне вразумительный ответ на невразумительный запрос. Но вообще-то я говорил о другом, мне жутко не нравится что в Микрософтовском руководстве есть множество "client MUST", Это руководство по написанию API а не закрытой системы. Клиент использующий API физически может использовать функции АПИ, но может и оборвать коннект - а если сервер пишется в соответствии с Микрософтовским руководством можно ожидать что клиент что-то там сделает и будет вызывать функции по порядку или в соответствии с ожиданиями сервера. Читай главы 6 и 9 например. Никто не гарантирует что клиент будет написан правильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 04:06 |
|
|
start [/forum/topic.php?fid=23&msg=39868347&tid=1459853]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 132ms |
0 / 0 |