C#에서 REST API에 액세스 (JSON에서 매개 변수를 교환하고 싶습니다)
내용
rest if 통신, rest if 액세스
가끔 C#을 사용하기 때문에 자신을 위한 메모
C#에서 rest full API에 액세스하려고하면 꽤 귀찮습니다.
php와 python에서 json을 사용하는 것에 익숙하다면 일일이 클래스를 만들거나 매우 귀찮습니다.
이상은 클래스를 경유해 access 하는 것이 좋지만·· 역시 귀찮아.
클래스를 전제로 만들어야 하는 C#에서는 php, python으로 만들어진 서비스의 버릇에 대해 가는 것이 힘들다.
키의 존재 확인이라든지 할 수 없다든가. . C#이 잘 어울리는 JSON뿐입니다.
환경
패키지 관리자에서 다음을 수행
Install-Package DynamicJson -Version 1.2.0
Install-Package Newtonsoft.Json -Version 12.0.2
Install-Package RestSharp
코드
Elasticsearch에 액세스하는 코드
지정된 시간을 초과하는 문서를 가져오는 샘플
using Newtonsoft.Json;
using RestSharp;
using Codeplex.Data;
/////////////////////////
RestClient client = new RestClient("http://ここにURL.co.jp");
//client.Authenticator = new HttpBasicAuthenticator("username", "password"); 認証が必要な場合
RestRequest request = new RestRequest("/ここにresourceのURL/",Method.POST);
//リクエストJSONは無名で作った方が楽
object x = new { query = new { range = new {
occurred_at = new {
gt = "2017-08-16 16:18:00+0900", lte = "now",
format = "yyyy-MM-dd HH:mm:ssZ" } } } };
request.AddJsonBody(x);
request.RequestFormat = DataFormat.Json;
var response = client.Execute(request);
//ここにドキュメントを処理するコード
var jsonObj = DynamicJson.Parse(response.Content);
var total=jsonObj.hits.total;
foreach (var hit in jsonObj.hits.hits)
{
var at=hit._source.occurred_at;
}
문자열로 액세스
첨자로 좋았습니까?
dynamic djson=DynamicJson.Parse(cjson)
string name=djson["name"]
키 존재 확인
private bool contains(dynamic value, string index)
{
foreach (string key in value.GetDynamicMemberNames())
{
if (index.Equals(key))
{
return true;
}
}
return false;
}
키 존재의 확인이 IEnumerable에서는 할 수 없기 때문에 GetDynamicMemberNames()로 반복해서 검색할 수밖에 없었다.
더 좋은 방법이 있다면 누군가를 알려주십시오.
(ICollection에 먹이면 좋겠지~)
덧붙여: IsDefined를 사용할 수 있는 것을 알았다
Reference
이 문제에 관하여(C#에서 REST API에 액세스 (JSON에서 매개 변수를 교환하고 싶습니다)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mokoenator/items/f01bdec3b715e96a0d4c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
패키지 관리자에서 다음을 수행
Install-Package DynamicJson -Version 1.2.0
Install-Package Newtonsoft.Json -Version 12.0.2
Install-Package RestSharp
코드
Elasticsearch에 액세스하는 코드
지정된 시간을 초과하는 문서를 가져오는 샘플
using Newtonsoft.Json;
using RestSharp;
using Codeplex.Data;
/////////////////////////
RestClient client = new RestClient("http://ここにURL.co.jp");
//client.Authenticator = new HttpBasicAuthenticator("username", "password"); 認証が必要な場合
RestRequest request = new RestRequest("/ここにresourceのURL/",Method.POST);
//リクエストJSONは無名で作った方が楽
object x = new { query = new { range = new {
occurred_at = new {
gt = "2017-08-16 16:18:00+0900", lte = "now",
format = "yyyy-MM-dd HH:mm:ssZ" } } } };
request.AddJsonBody(x);
request.RequestFormat = DataFormat.Json;
var response = client.Execute(request);
//ここにドキュメントを処理するコード
var jsonObj = DynamicJson.Parse(response.Content);
var total=jsonObj.hits.total;
foreach (var hit in jsonObj.hits.hits)
{
var at=hit._source.occurred_at;
}
문자열로 액세스
첨자로 좋았습니까?
dynamic djson=DynamicJson.Parse(cjson)
string name=djson["name"]
키 존재 확인
private bool contains(dynamic value, string index)
{
foreach (string key in value.GetDynamicMemberNames())
{
if (index.Equals(key))
{
return true;
}
}
return false;
}
키 존재의 확인이 IEnumerable에서는 할 수 없기 때문에 GetDynamicMemberNames()로 반복해서 검색할 수밖에 없었다.
더 좋은 방법이 있다면 누군가를 알려주십시오.
(ICollection에 먹이면 좋겠지~)
덧붙여: IsDefined를 사용할 수 있는 것을 알았다
Reference
이 문제에 관하여(C#에서 REST API에 액세스 (JSON에서 매개 변수를 교환하고 싶습니다)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mokoenator/items/f01bdec3b715e96a0d4c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
using Newtonsoft.Json;
using RestSharp;
using Codeplex.Data;
/////////////////////////
RestClient client = new RestClient("http://ここにURL.co.jp");
//client.Authenticator = new HttpBasicAuthenticator("username", "password"); 認証が必要な場合
RestRequest request = new RestRequest("/ここにresourceのURL/",Method.POST);
//リクエストJSONは無名で作った方が楽
object x = new { query = new { range = new {
occurred_at = new {
gt = "2017-08-16 16:18:00+0900", lte = "now",
format = "yyyy-MM-dd HH:mm:ssZ" } } } };
request.AddJsonBody(x);
request.RequestFormat = DataFormat.Json;
var response = client.Execute(request);
//ここにドキュメントを処理するコード
var jsonObj = DynamicJson.Parse(response.Content);
var total=jsonObj.hits.total;
foreach (var hit in jsonObj.hits.hits)
{
var at=hit._source.occurred_at;
}
dynamic djson=DynamicJson.Parse(cjson)
string name=djson["name"]
private bool contains(dynamic value, string index)
{
foreach (string key in value.GetDynamicMemberNames())
{
if (index.Equals(key))
{
return true;
}
}
return false;
}
Reference
이 문제에 관하여(C#에서 REST API에 액세스 (JSON에서 매개 변수를 교환하고 싶습니다)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mokoenator/items/f01bdec3b715e96a0d4c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)