5 / 5 / 3
Регистрация: 17.10.2012
Сообщений: 116
1

WebClient: GET, POST, PATCH, PUT

11.02.2016, 10:31. Показов 3578. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. До селе пользовался только GET запросами, читал про POST запросы и думал, что больше нет. А тут вдруг столкнулся с PATCH и PUT. Помогите создать метод, который будет обрабатывать API запрос.

Как я понял от создателя API сайта, нужно сначала запрос (POST /api/user_rates) отправить, а затем (PATCH /api/user_rates/:id) или (PUT /api/user_rates/:id )

POST
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
POST /api/user_rates
{
  "user_rate": {
    "user_id": 23456824,
    "target_id": 35,
    "target_type": "Anime",
    "score": 10,
    "status": 1,
    "episodes": 2,
    "volumes": 3,
    "chapters": 4,
    "text": "test",
    "rewatches": 5
  }
}
201
{
  "id": 8,
  "score": 10,
  "status": 1,
  "status_name": "Watching",
  "text": "test",
  "episodes": 2,
  "chapters": null,
  "volumes": null,
  "text_html": "test",
  "rewatches": 5,
  "user": {
    "id": 23456824,
    "nickname": "user_64",
    "avatar": "/assets/globals/missing_avatar/x48.png",
    "image": {
      "x160": "/assets/globals/missing_avatar/x160.png",
      "x148": "/assets/globals/missing_avatar/x148.png",
      "x80": "/assets/globals/missing_avatar/x80.png",
      "x64": "/assets/globals/missing_avatar/x64.png",
      "x48": "/assets/globals/missing_avatar/x48.png",
      "x32": "/assets/globals/missing_avatar/x32.png",
      "x16": "/assets/globals/missing_avatar/x16.png"
    },
    "last_online_at": "2016-02-04T21:51:54.213+03:00"
  },
  "anime": {
    "id": 35,
    "name": "anime_32",
    "russian": null,
    "image": {
      "original": "/assets/globals/missing_original.jpg",
      "preview": "/assets/globals/missing_preview.jpg",
      "x96": "/assets/globals/missing_x96.jpg",
      "x48": "/assets/globals/missing_x48.jpg"
    },
    "url": "/animes/35-anime_32",
    "kind": "tv",
    "ongoing": null,
    "anons": null,
    "status": null,
    "episodes": 0,
    "episodes_aired": 0
  },
  "manga": null
}

PATCH
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
PATCH /api/user_rates/7
{
  "user_rate": {
    "score": 10,
    "status": 1,
    "episodes": 2,
    "volumes": 3,
    "chapters": 4,
    "text": "test",
    "rewatches": 5
  }
}
200
{
  "id": 7,
  "score": 10,
  "status": 1,
  "status_name": "Watching",
  "text": "test",
  "episodes": 2,
  "chapters": null,
  "volumes": null,
  "text_html": "test",
  "rewatches": 5,
  "user": {
    "id": 23456823,
    "nickname": "user_63",
    "avatar": "/assets/globals/missing_avatar/x48.png",
    "image": {
      "x160": "/assets/globals/missing_avatar/x160.png",
      "x148": "/assets/globals/missing_avatar/x148.png",
      "x80": "/assets/globals/missing_avatar/x80.png",
      "x64": "/assets/globals/missing_avatar/x64.png",
      "x48": "/assets/globals/missing_avatar/x48.png",
      "x32": "/assets/globals/missing_avatar/x32.png",
      "x16": "/assets/globals/missing_avatar/x16.png"
    },
    "last_online_at": "2016-02-04T21:51:54.213+03:00"
  },
  "anime": {
    "id": 34,
    "name": "anime_31",
    "russian": null,
    "image": {
      "original": "/assets/globals/missing_original.jpg",
      "preview": "/assets/globals/missing_preview.jpg",
      "x96": "/assets/globals/missing_x96.jpg",
      "x48": "/assets/globals/missing_x48.jpg"
    },
    "url": "/animes/34-anime_31",
    "kind": "tv",
    "ongoing": null,
    "anons": null,
    "status": null,
    "episodes": 0,
    "episodes_aired": 0
  },
  "manga": null
}

Ссылки на документацию к API-запросам: POST и PATCH
Из беседы

Я:
Здравствуй. У меня вопрос по API.
Я правильно понимаю, что по этому запросу можно отредактировать любое аниме/мангу из своего списка (кол-во просмотренных эпизодов/глав, оценка, статут: в планах, в процессе, законченно)?
Создатель API:
Нет. create метод только создаёт запись в твоём списке. а редактировать затем нужно этим методом /api/doc/1/user_rates/update
повторный вызов create по тому же аниме не сработает

Я писал ему после, но он не отвечает почему то. Пытаюсь как то иначе разобраться.

В качестве примера вот реализация по похожей инструкции GET запроса.
GET

GET /api/users/whoami
Show current user's brief info
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
GET /api/users/whoami
200
{
  "id": 27,
  "nickname": "Test",
  "avatar": "/assets/globals/missing_avatar/x48.png",
  "image": {
    "x160": "/assets/globals/missing_avatar/x160.png",
    "x148": "/assets/globals/missing_avatar/x148.png",
    "x80": "/assets/globals/missing_avatar/x80.png",
    "x64": "/assets/globals/missing_avatar/x64.png",
    "x48": "/assets/globals/missing_avatar/x48.png",
    "x32": "/assets/globals/missing_avatar/x32.png",
    "x16": "/assets/globals/missing_avatar/x16.png"
  },
  "last_online_at": "2016-02-04T21:51:54.213+03:00",
  "name": null,
  "sex": null,
  "website": null,
  "birth_on": null
}

Реализация
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
using System.Net;
using Newtonsoft.Json;
// ...
        private static T webMeth<T> (string url)
        {
            using (var webClient = new WebClient())
            {
                webClient.Encoding = Encoding.UTF8;
                webClient.Headers.Add("X-User-Nickname", Log.login);
                webClient.Headers.Add("X-User-Api-Access-Token", Log.access_token);
                webClient.Headers.Add("User-Agent", "Shiki Desktop App");
                var response = webClient.DownloadString(url);
                var result = JsonConvert.DeserializeObject<T>(response);
                return result;
            }
        }
 
        public static WhoAmI GetId()
        {
            string url = "http://shikimori.org/api/users/whoami";
            return webMeth<WhoAmI>(url);
        }
//... описание класса WhoAmI
    public class WhoAmI
    {
        public int id { get; set; }
        public string nickname { get; set; }
        public string avatar { get; set; }
        public ImageUser image { get; set; }
        public string last_online_at { get; set; }
        public string name { get; set; }
        public string sex { get; set; }
        public string website { get; set; }
        public string birth_on { get; set; }
    }
 
    public class ImageUser
    {
        public string x160 { get; set; }
        public string x148 { get; set; }
        public string x80 { get; set; }
        public string x64 { get; set; }
        public string x48 { get; set; }
        public string x32 { get; set; }
        public string x16 { get; set; }
    }


Добавлено через 17 часов 47 минут
Неужели никто ничего не может сказать про PATCH или PUT?
Хоть что-нибудь. Направление какое-нибудь. Если про POST запросы в интернете достаточно информации, то про PATCH я не смог ничего найти. Или я неправильно понимаю документацию и там речь о другом?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.02.2016, 10:31
Ответы с готовыми решениями:

POST запрос WebClient
Помогите пожалуйста что не так? Хочу загрузить на сайт скришот,а возращает главную...

Почему PUT вместо POST?
Дали в шараге задание по созданию api. Один из методов в задании, написан, как put запрос, однако в...

XMLHttpRequest RESTful (GET, POST, PUT, DELETE)
Всем доброго времени суток. Есть образец функционала XMLHttpRequest...

WebApi обработка post и put запроса от Angular
Добрый день. У меня есть сервер написанный как отдельное приложение в .Net Core WebApi и клиент...

1
5 / 5 / 3
Регистрация: 17.10.2012
Сообщений: 116
21.02.2016, 16:11  [ТС] 2
Примерная суть из того, что мне объяснили.. Может кому поможет. Тему закрываю.
POST - ты создаёшь/изменяешь какие-то данные, которые могут находиться где угодно.
PUT - ты создаёшь/изменяешь непосредственно тот документ, к которому делаешь запрос
PATCH - то же самое, что и PUT, только ты работаешь с частью документа, а не со всем документом.
0
21.02.2016, 16:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.02.2016, 16:11
Помогаю со студенческими работами здесь

CURL Возможно ли при использовании метода PUT передача POST параметров?
Добрый день камрады подскажите пожалуйста такую вешь! Возможно ли при использовании метода PUT...

ASP.NET Core Web API - не приходят данные [FromBody] Post/Put запросов
Всем привет! Столкнулся в ASP.NET Core Web API с ситуацией, когда в Action не приходят данные...

WebClient: При отправке на HTTPS данные POST задваиваются
using (WebClient webClient = new WebClient()) { string address =...

Ссылки для скачивания с помощью WebClient.DownloadFile и WebClient.DownloadFileAsync
Ссылки какие должны быть, для скачивания webClient.DownloadFile и webClient.DownloadFileAsync Не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru