Skip to content
This repository has been archived by the owner on Mar 26, 2021. It is now read-only.

New API #7

Open
ed-asriyan opened this issue Jun 20, 2018 · 23 comments
Open

New API #7

ed-asriyan opened this issue Jun 20, 2018 · 23 comments
Assignees
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@ed-asriyan
Copy link
Member

у меня следующие предложения:

  • в записях передаём помимо атрибутов ещё и id релейшенов.
    /api/controller
{
  "code": 0,
  "msg": {
    "controllers": [
      {
        "id": 1,
        "attr1": "value",
        "attr2": "value",
        "object": 4,
        "sensors": [4, 10]
      },
      {
        "id": 2,
        "attr1": "value",
        "attr2": "value",
        "object": 4,
        "sensors": [5]
      },
      {
        "id": 2,
        "attr1": "value",
        "attr2": "value",
        "object": 2,
        "sensors": []
      }
    ],
}
  • возможность в ответ включать записи релейшенов
    /api/controllers?include=object
    /api/controllers?include=object,sensors
{
  "code": 0,
  "msg": {
    "controllers": [
      {
        "id": 1,
        "attr1": "value",
        "attr2": "value",
        "object": 4,
        "sensors": [4, 10]
      },
      {
        "id": 2,
        "attr1": "value",
        "attr2": "value",
        "object": 4,
        "sensors": [5]
      },
      {
        "id": 3,
        "attr1": "value",
        "attr2": "value",
        "object": 2,
        "sensors": []
      }
    ],
    "objects": [
     {
        "id": 2,
        "attr1": "value",
        "attr2": "value",
        "controllers": [3]
      },  
     {
        "id": 4,
        "attr1": "value",
        "attr2": "value",
        "controllers": [1, 2]
      },
]
}
  • получить запись по id:
    /api/controller/1
{
  "code": 0,
  "msg": {
    "controllers": [
      {
        "id": 1,
        "attr1": "value",
        "attr2": "value",
        "object": 4,
        "sensors": [4, 10]
      }
    ]
}

готов обсуждать

@wolf1996 wolf1996 added enhancement New feature or request help wanted Extra attention is needed labels Jun 24, 2018
@wolf1996
Copy link
Contributor

урлы точно такие?
или изменить имеющееся поведение на get_user_sensors и т.д.?

@ed-asriyan
Copy link
Member Author

ed-asriyan commented Jun 24, 2018

какое слово писать /get_user_sensors или /sensors -- не имеет значения. вопрос чисто с точки зрения красоты.
поэтому, можем и оставить. хотя, лично мне более приятен второй вариант

тут я делаю упор на релейшены и возможность расширить количество получаемой информации за один запрос (пункт 2) или наоборот сузить (пункт 3)

@wolf1996
Copy link
Contributor

скорее настолько полно с урлами будет в следующей версией апи. могу тут просто подмешать к имеющимся методам.

@wolf1996
Copy link
Contributor

крч предлагаю.

/v2/controller/<id>/sensors
/v2/object/<id>/controllers
/v2/object/<id>/sensors
/v2/object/<id>/subs
/v2/user/objects
/v2/user/controllers
/v2/user/sensors
/v2/user/subs

subs - все зависимости. и пока только это.

@ed-asriyan
Copy link
Member Author

ed-asriyan commented Jun 25, 2018

/v2/object/<id>/sensors

^ у объекта нет сенсоров

их этих всех урлов щас исползоваться будет, наверное, только /v2/object/<id>/controllers. поэтому, из-за соображения по времени я бы пока сделал просто

/v2/objects
/v2/object/<id>
/v2/controllers
/v2/controller/<id>
/v2/sensors
/v2/sensor/<id>
/v2/sensor/<id>/data -- исключение

но include (п. 2) обязательно нужен, тк с помощью него я могу брать только те данные, которые мне нужны в одном запросы

p. s. полностью соблюдает рест, если не ошибаюсь

@wolf1996
Copy link
Contributor

У объекта есть сенсоры, т.к. есть контроллеры у которых есть сенсоры. Цель этого апи - сократить количество передаваемой даты и лишних запросов.

@wolf1996
Copy link
Contributor

/v2/user
/v2/object/<id>
/v2/controller/<id>
/v2/sensor/<id>

вот так вот предлагаю

@ed-asriyan
Copy link
Member Author

аппрув) но будь готов, что с расширением функционала попрошу урлы без id)

@wolf1996
Copy link
Contributor

но зачем?

@wolf1996
Copy link
Contributor

/v2/user/relations
/v2/object/<id>/relations
/v2/controller/<id>/relations
/v2/sensor/<id>/relations

с параметром include
возвращает исключительно relations объекта.
если в include есть что-нибудь- возврат того, что в include.
если include не задан - возврат всего в плоской форме.

@wolf1996
Copy link
Contributor

include можно тоже подредактировать чтоб парсилось всё на стадии урла.
?include=objects&include=controllers

@wolf1996
Copy link
Contributor

wolf1996 commented Jun 26, 2018

и, да у sensor нет relations, кст.
P.s.
обсуждаемо

wolf1996 added a commit that referenced this issue Jun 26, 2018
@ed-asriyan
Copy link
Member Author

через запятую было бы лаконичнее, как по мне
?include=objects,controllers

@ed-asriyan
Copy link
Member Author

/v2/user/relations
/v2/object/<id>/relations
/v2/controller/<id>/relations
/v2/sensor/<id>/relations

эти урлы в начале тоже юзаться не будут. этих будет достаточно #7 (comment)

@wolf1996
Copy link
Contributor

через запятую немного больше мест где можно накосячить. а тут можно переложить всё на парсинг\составление url

@ed-asriyan
Copy link
Member Author

ok

@ed-asriyan
Copy link
Member Author

ed-asriyan commented Jun 27, 2018

/user/sign_in -> /auth/sign_in
/user/logout -> /auth/logout

чтобы не пересекалось с рестом, @wolf1996

@wolf1996
Copy link
Contributor

звучит логично... но как бы по идее это всё уедет на отдельный поддомен. ткчт смысл?

@ed-asriyan
Copy link
Member Author

ок, тогда авторизацию щас не иделаю: пока заглушки

@ed-asriyan
Copy link
Member Author

@wolf1996, data тоже надо уметь отдавать с помощью include

@wolf1996
Copy link
Contributor

сорян, но тут я строго против

@wolf1996
Copy link
Contributor

Обсудили, сошлись на добавление одного поля в сенсор.
last_value

@wolf1996
Copy link
Contributor

Впредь предлагаю описывать цель, которой надо добиться, а далее будем решать как встроить её в API.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

2 participants