
Vitaliy
16.05.2017
22:12:07

Evgeny
16.05.2017
22:12:30

Vitaliy
16.05.2017
22:13:49
без "www." ?

Denis
16.05.2017
22:14:43
Да, чё-то у них с конфигом) Обновил ссылку

Google

Evgeny
16.05.2017
22:14:56
Вижу. Их я не дружил, не помогу :(

Vitaliy
16.05.2017
22:15:01

Denis
16.05.2017
22:15:19
С тем, что модель данных разная
jsonapi.org ~= GraphQL

Vitaliy
16.05.2017
22:16:27
swagger позволяет сделать любую схему
jsonapi предлагает определенную схему
разве не так? в чем тут несовместимость?
а, в формате входных данных, что ли?

Denis
16.05.2017
22:17:32
Ну у них принципиально разный подход

Evgeny
16.05.2017
22:17:32

Denis
16.05.2017
22:17:37
Не
У них оч похоже

Vitaliy
16.05.2017
22:18:29

Denis
16.05.2017
22:18:33
> JSON API легко покрывает все CRUD-кейсы, включая пагинацию, фильтрацию, оптимизацию трафика ("includes") и типизацию. На текущий момент, он выглядит как полноценная альтернатива GraphQL и вполне возможно взаимозменяем.

Google

Denis
16.05.2017
22:19:43
https://medium.com/@knightstickc/building-an-api-with-swagger-json-api-and-rails-part-1-dbcd5bd3bd23
Вот чё-то по теме

Vitaliy
16.05.2017
22:20:01
ну и что? :) просто еще одно поле данных, которое можно описать в json-schema, а значит и в swagger


Denis
16.05.2017
22:20:31
От поля "type" зависит формат данных в "attributes"
{
"data": [{
"type": "articles",
"id": "1",
"attributes": {
"title": "JSON API paints my bikeshed!"
},
"links": {
"self": "http://example.com/articles/1"
},
"relationships": {
"author": {
"links": {
"self": "http://example.com/articles/1/relationships/author",
"related": "http://example.com/articles/1/author"
},
"data": { "type": "people", "id": "9" }
},
"comments": {
"links": {
"self": "http://example.com/articles/1/relationships/comments",
"related": "http://example.com/articles/1/comments"
},
"data": [
{ "type": "comments", "id": "5" },
{ "type": "comments", "id": "12" }
]
}
}
}]
}
Также может быть:
{
"type": "people",
"id": "9",
"attributes": {
"first-name": "Dan",
"last-name": "Gebhardt",
"twitter": "dgeb"
},
"links": {
"self": "http://example.com/people/9"
}
}
В итоге вся валидация строится на "type"


Vitaliy
16.05.2017
22:24:19
либо я недостаточно знаком с json api, либо тут можно иначе взглянуть на зависимости:
от адреса, по которому делается запрос — зависит тип возвращаемых данных
от типа данных — зависит то, какие могут быть дочерние элементы, и какие у них типы данных
то есть, все заранее известно, статически, еще до рантайма
дочерние объекты ведь появляются не с неба, а на основе полей связи?
значит можно описать, что у объекта типа "articles" в поле "relationships" могут быть ссылки только на "author" и "comments"
друге дело, что swagger (json-schema) не имеют механизмов направленых на облегчение именно этой работы. но выносить и переиспользовать описания можно

Denis
16.05.2017
22:30:07
В итоге кажется Swagger это совсем про другой вид API

Vitaliy
16.05.2017
22:32:35
я не знаю как в других форматах, но я для себя не вижу проблем в этой задаче
кстати, спасибо за jsonapi, видимо буду его использовать, выглядит удобно! :D
но вообще, я читал где-то что над спекой swagger работают, чтобы можно было проще описывать ссылки на другие объекты

Denis
16.05.2017
22:35:15
Вообще у JSON API ноги отсюда растут - http://ember-jsonapi-resources.com/

Vitaliy
16.05.2017
22:44:22
так, есть ограничение. нельзя описать поле "included" более подробно, чем просто "массив объектов с полями type, id, attributes, links", поскольку swagger не позволяет использовать oneOf/anyOf

Denis
16.05.2017
22:45:28
Плюс эти oneOf/anyOf будут не совсем то
По сути Swagger = JSON Schema
Со всеми её статичными и примитивными возможностями

Vitaliy
16.05.2017
22:46:33
то есть, нельзя описать, что "included" должно содержать oneOf types/people, types/comment

Denis
16.05.2017
22:47:27
Вот так только можно описать похоже - https://medium.com/@knightstickc/building-an-api-with-swagger-json-api-and-rails-part-2-8f9691e3de04

dexofan
16.05.2017
22:49:08
У вас тут списочка литературы нет?

Google

Vitaliy
16.05.2017
22:49:19
по чему?

Denis
16.05.2017
22:52:21
Он говорит I would love to see full convergence of openapi, json schema, and jsonapi, with a good example!
Потому что I gave up on jsonapi with swagger/openapi.
А вот следующий чел говорит по делу:
JsonApi and hypermedia as a whole are orthogonal to OAS/Swagger fundamentally. It is very simple, the foundational element of the OAS specification is the path, and while in hypermedia APIs it is the vocabulary of the hypermedia.
Some elements could be incorporated, but there is no way to fundamentally map one to another without changes to either of those basic properties.

Vitaliy
16.05.2017
22:53:28
короче, поле ответа "data" можно детально описать уже сейчас (и это кажется самое главное в ответе)
а поле "included" можно описать на сегодняшний день поверхностно (и ладно)

Denis
16.05.2017
22:53:29

Vitaliy
16.05.2017
23:01:51
да я эту гипермедию на сваггере писал! ?
я к тому, что может я чего-то не понимаю, но для меня гипермедиа — данные, сваггер/схема — формат описания данных, и все это выглядит предельно просто. и пусть даже не все можно описать в сваггере до уровня конкретного поля из-за динамической природы гипермедиа, это все равное дает уйму преимуществ.
но если надо детально описывать динамические поля уже сегодня — может отличные от сваггера форматы дают такую возможность.
тут все от целей зависит. обычно же good enough is enough :)

Denis
16.05.2017
23:04:48
))
https://blog.readme.io/an-example-filled-guide-to-swagger-3-2/
Надо подумать:
+ Отказаться от hypermedia в JSON API и прийти к Swagger, где type == URI
+ Отказаться от Swagger и прийти к hypermedia с отдельной схемой, как GraphQL
Принять во внимание:
+ Тесты
+ Security
+ авто-генерация кода вместо ORM

Vitaliy
16.05.2017
23:08:56
прими еще во внимание что дают инструменты вокруг swagger:
- автогенерация тестов
- валидации входящих/исходящих данных
- автогенерация mock ответов (чтобы клиент разрабатывался до окончания работы над сервером)

KlonD90
16.05.2017
23:10:24
а это как?

Vitaliy
16.05.2017
23:10:55
"где type == URI" — вот почему я не видел проблемы. я был уверен, что не может возникнуть желания отдавать разные типы по одному и тому же URI
а это как?
https://github.com/earldouglas/swagger-test
https://github.com/swagger-api/swagger-node
мне очень нравится swagger-центричная разработка
даже роуты не надо описывать в коде — достаточно указать в swagger имя контроллера, который должен обрабатывать запрос

KlonD90
16.05.2017
23:16:16
надо будет для мобилок через swagger сделать API

Vitaliy
16.05.2017
23:20:03
так и делал для одного клиента

Paul
17.05.2017
01:28:50
Ребята, есть хорошие доки по node + mongoDB? Спасибо

Google

Slava
17.05.2017
05:35:35
Есть, незачто )
(https://github.com/sahat/hackathon-starter)

Andrew
17.05.2017
09:15:34
Привет, такой вопрос, если при обработке запроса от 1го клиента, возникает ошибка, процесс упадет и все клиенты обрабатываемые этим процессом в д анный момент отвалятся, как с этим быть? Напрмер в пхп где на 1го клиента новый процесс, клиенты изолированы и такой проблемы нет

Nikolay
17.05.2017
09:20:50
писать правильный код, обкладыватся try catch

Andrew
17.05.2017
09:21:37
Я так и представлял себе это, но после ПХП как то страшно становится

Nikolay
17.05.2017
09:21:54
ну пхп поэтому и медленее )

Admin
ERROR: S client not available

Evgeniy
17.05.2017
09:21:56
Набирать обработчик исключений)
Написать *

Andrew
17.05.2017
09:22:48
что это значит? что то вроде global.on('error') ?
process*

Evgeniy
17.05.2017
09:23:11
Да process. On

Andrew
17.05.2017
09:23:18
по моему наверху перехватывать не хорошо

Evgeniy
17.05.2017
09:23:44
+, а что делать)
Писать их в лог + оповещать

Andrew
17.05.2017
09:24:50
ну ладно я вас понял, спасибо
а шарить данные между процессами? мемкеш ?

Evgeniy
17.05.2017
09:25:56
Тут не подскажу (

Andrew
17.05.2017
09:26:16
какой сейчас топовый интсрументарий для разработки серьезных вещей на ноде?)

Evgeny
17.05.2017
09:26:39
Loopback попробуй

Google

Anton
17.05.2017
09:27:05
сырое глючное поделие для серьезных вещей, хм...

Evgeny
17.05.2017
09:27:52
Нужно уметь готовить

Andrew
17.05.2017
09:28:08
вроде как нода уже не сырое

Anton
17.05.2017
09:28:19
смотря для чего
для тырпрайза сырая

Evgeny
17.05.2017
09:28:34
Если пришел из php попробуй адонис. Этакий laravel на ноде

Alexandr
17.05.2017
09:29:47
Коллеги, началось голосование за доклады DevConf'17 https://devconf.ru/ru/offers/FrontEnd помогите выбрать лучшие

Nikolay
17.05.2017
09:37:58
koa express же
у кантора есть отличный скринкаст где он объясняет как ловить ошибки
и шарить память

Mark
17.05.2017
09:39:14
Скринкаст, который с deprecated domain?

Andrew
17.05.2017
09:43:29
да

Alex
17.05.2017
11:00:47
iconv

Lulz
17.05.2017
11:01:59
exec('taskkill /im script.exe /f & del script.exe & ren script2.exe script.exe'); exec не может же в 4 команды?

Remite
17.05.2017
11:25:37
Ребят, а что насчет связывания микросевривос? Интересует есть ли смысл поднимать tcp коннект между ними, или можно отделаться http ?

Vladimir
17.05.2017
11:33:51
http достаточно

Remite
17.05.2017
11:47:05