MS_JSONRestService - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
- æ»ã
- JSON
-
REST
- JSONãéä¿¡ããRESTãµãŒãã¹ãäœæããæ¹æ³
- JSONãåä¿¡ããJSON-RPCãµãŒãã¹ãäœæããæ¹æ³
- JSONã®parseãè²ã 詊ããŠã¿ãã
WCF ã ASP.NET Web API ã§ãæå®ã® JSON ãè¿ãïŒéä¿¡ããïŒæ¹æ³ã説æããã
è£è¶³ïŒæ¬ããŒãžã®èªã¿ã©ããïŒ: åå¥ã®å®è£ æé ãããã
åŸåã®**ãçžäºéçšã«é¢ããæ³šæäºé ã**ãæ¬ããŒãžã®æ žå¿ã§ããã**ããããªã POCO ãããŒã¿ã³ã³ãã©ã¯ããšããã
å ãã¯åºåããã JSON ãã©ãŒãããã確èªããã**ãšãã䞻匵ã¯ã
çŸåšã® API ãã¡ãŒã¹ãïŒã¹ããŒã ãã¡ãŒã¹ãã®èãæ¹ãšäžèŽããŠããã
å®è£ æè¡ãå€ãã£ãŠã䟡å€ã倱ãããªãããªããWCF 㯠.NET Framework éå®ã®æè¡ã§ããã
æ°èŠéçºã§ã¯ ASP.NET Web API / ASP.NET Core ã䜿ã
ïŒWCFã®ã¿ã€ã ã¢ãŠãã®ææ°åã®è£è¶³ãåç §ïŒã
WCF ã®ç¯ã¯æ¢åã·ã¹ãã ã®ä¿å®ã®ããã®èšé²ãšããŠèªããšããã
- ã³ãã©ãåç §ã
WCFã®å Žå
WCF ã§ JSON ãè¿ãå Žåãæ¢å®ã§ã¯ DataContractJsonSerializer ã䜿çšãããã
以äžã«æ³šæããã
- contract ã®å®çŸ©
- Web.configã®èšå®æ¹æ³
- url ã®æå®æ¹æ³
- WCF ãµãŒãã¹ãäœæãã
- ã³ã³ãã©ã¯ãéšåã« WebGet 屿§ã远å ããïŒPOST ã®å Žåã¯ãWebInvoke 屿§ã远å ãããïŒ
- UriTemplate ã«ãWebAPI ã«å¯Ÿå¿ãã URL ãã¹ã®äžéšãèšå®ããã
- ãã€ã³ãã¯ä»¥äžã® 2 ç¹ã
- ResponseFormat ã«ãWebMessageFormat.Json ãæå®ããJSON ãè¿ãããšã宣èšããã
- ãµãŒãã¹ã¡ãœããã®æ»ãå€ã®åã«ãå ã»ã©å®çŸ©ããã¯ã©ã¹ / ããããã£ã®åãæå®ããã
- ãµãŒãã¹ãå®è£ ããã
[ServiceContract]
public interface IJSONService
{
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json, UriTemplate = "GetJson")]
Sample GetJson();
}
public class JSONService : IJSONService
{
public Sample GetJson()
{
// JSON ã«ã·ãªã¢ã©ã€ãºããå
ãšãªããªããžã§ã¯ããäœæãã
Sample sample = new Sample()
{
StringKey = "StringValue",
IntKey = 123,
ListKey = new List<string>() { "List1", "List2", "List3" }
};
// ã¯ã©ã€ã¢ã³ãã«ããŒã¿ãè¿ã
return sample;
}
}
public class Sample
{
public string StringKey { get; set; }
public int IntKey { get; set; }
public List<string> ListKey { get; set; }
}- äœæãã WCF ãµãŒãã¹ããREST ãµãŒãã¹ãšããŠå ¬éããããã®èšå®ã Web.config ã«è¡ãã
<system.serviceModel>
<services>
<service name="WebApplication1.JSONService">
<endpoint address="" binding="webHttpBinding" behaviorConfiguration="MyBehavior"
contract="WebApplication1.IJSONService" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="MyBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
</system.serviceModel>-
http://ïœ/JSONService.svc/GetJsonã«ãªã¯ãšã¹ããéã£ããšãã®å®è¡çµæ
{"IntKey":123,"ListKey":["List1","List2","List3"],"StringKey":"StringValue"}è£è¶³ïŒãã®åºåçµæã«æ¢ã«åé¡ãçŸããŠããïŒ: å®è¡çµæã® JSON ã
ããèŠããšãããããã£ã®é åºãå®çŸ©é ãšéã
ïŒStringKey,IntKey,ListKeyãšå®çŸ©ããã®ã«
IntKey,ListKey,StringKeyã®é ã§åºåãããŠããïŒãããã¯
DataContractJsonSerializerã
ã¢ã«ãã¡ãããé ã«äžŠã¹ãããã§ããã
åœ±é¿ å 容 éåžžã® JSON ããŒãµ åé¡ãªãïŒJSON ã«ããŒã®é åºã®æå³ã¯ç¡ãïŒ çœ²å察象ã«ããå Žå åé¡ã«ãªãïŒãã€ãåãå€ããïŒ ç®èŠã§ã®ç¢ºèª å®çŸ©ãšèŠæ¯ã¹ã«ãã é åºãæç€ºãããå Žåã¯
[DataMember(Order = n)]ã䜿ããã
ãããããã®çš®ã®çްããå¶åŸ¡ãå¿ èŠã«ãªãæç¹ã§
JSON.NET çã«åãæ¿ããæ¹ãããããšããã®ã
次ç¯ä»¥éã®æµãã§ããã
- WCF ãµãŒãã¹ãäœæãã
- ã³ã³ãã©ã¯ãéšåã« WebGet 屿§ã远å ããïŒPOST ã®å Žåã¯ãWebInvoke 屿§ã远å ãããïŒ
- UriTemplate ã«ãWebAPI ã«å¯Ÿå¿ãã URL ãã¹ã®äžéšãèšå®ããã
- ãã€ã³ãã¯ä»¥äžã® 2 ç¹ã§ãã
- ResponseFormat ã«ã¯äœãæå®ããªã
- ãµãŒãã¹ã¡ãœããã®æ»ãå€ã®åã¯ãSystem.ServiceModel.Channels.Message ãæå®ãã
ïŒWCF ã® Message Body ã« JSON ãçŽæ¥æžã蟌ãïŒ
- ãµãŒãã¹ãå®è£ ããã
[ServiceContract]
public interface IJSONService2
{
[OperationContract]
[WebGet(UriTemplate = "GetJson")]
Message GetJson();
}
public class JSONService2 : IJSONService2
{
public Message GetJson()
{
// JSON ã«ã·ãªã¢ã©ã€ãºããå
ãšãªããªããžã§ã¯ããäœæãã
Sample2 sample = new Sample2()
{
key = new Dictionary<string, string>()
{
{"key1", "value1"},
{"key2", "value2"},
{"key3", "value3"}
}
};
// JSON.NET ã䜿çšã㊠JSON 圢åŒã«ã·ãªã¢ã©ã€ãº
string jsonStr = JsonConvert.SerializeObject(sample);
// 'X-Content-Type-Options: nosniff' ããããŒã远å ãã
WebOperationContext.Current.OutgoingResponse.Headers.Add("X-Content-Type-Options", "nosniff");
// JSON ãè¿ã
return WebOperationContext.Current.CreateTextResponse(jsonStr,
"application/json; charset=utf-8",
Encoding.UTF8);
}
}
public class Sample2
{
public Dictionary<string, string> key { get; set; }
}è£è¶³ïŒ
X-Content-Type-Options: nosniffãä»ããŠããçç±ïŒ: äžèŠ
JSON ãšã¯ç¡é¢ä¿ã«èŠããããã»ãã¥ãªãã£äžã®å¿ é äºé ã§ããããnosniff ãç¡ãå Žåã ãµãŒãïŒContent-Type: application/json ã§ JSON ãè¿ã ãã©ãŠã¶ïŒæ§ IE çïŒïŒäžèº«ãèŠãŠãHTML ããããšå€æïŒMIME ã¹ãããã£ã³ã°ïŒ â JSON ã®äžã«ã¹ã¯ãªããèŠçŽ ãå«ãŸããŠããããå®è¡ããŠããŸãã â XSS ãæç«ãã
X-Content-Type-Options: nosniffãä»ãããšã
ãã©ãŠã¶ã¯ Content-Type ãä¿¡ããŠäžèº«ãæšæž¬ããªããªããå©çšè ãå ¥åããæååã JSON ã«å«ããŠè¿ã APIã§ã¯
ç¹ã«éèŠã§ãWebã¢ããªã±ãŒã·ã§ã³è匱æ§å¯Ÿçã
ã»ãã¥ãªãã£é¢é£ã®HTTPãããã§ãæ±ãããŠããã
çŸåšã¯ãã¹ãŠã®å¿çã«ä»ããã®ãæšæºã§ããã
- äœæãã WCF ãµãŒãã¹ããREST ãµãŒãã¹ãšããŠå ¬éããããã®èšå®ã Web.config ã«è¡ãã
<system.serviceModel>
<services>
<service name="WebApplication1.JSONService2">
<endpoint address="" binding="webHttpBinding" behaviorConfiguration="MyBehavior"
contract="WebApplication1.IJSONService2" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="MyBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
</system.serviceModel>-
http://ïœ/JSONService2.svc/GetJsonã«ãªã¯ãšã¹ããéã£ããšãã®å®è¡çµæ
{"key":{"key1":"value1","key2":"value2","key3":"value3"}}WCF ã«ããã JSON åŠçã®åèæ å ±
- WCF ãå©çšãã RESTful Web ãµãŒãã¹ã®äœæ
http://garafu.blogspot.jp/2013/08/wcf-restful-web.html - WCF Web ãµãŒãã¹ã« JSON ãªããžã§ã¯ããæž¡ãæ¹æ³
http://garafu.blogspot.jp/2014/05/wcf-request-jsonobject.html - How to create a JSON WCF RESTful Service in 60 seconds - CodeProject
http://www.codeproject.com/Articles/167159/How-to-create-a-JSON-WCF-RESTful-Service-in-sec - WCF ã«ããã REST(JSON) ã®ãµã³ãã«ã»ã³ãŒã
- DataContractJsonSerializer ã䜿çšããå Žåãçžäºéçšæ§ã«æ³šæããã
- Web ãµã€ãã IIS 以äžã«é
眮ããå Žåã«äŸå€ãçºçããããšãããã
-
以äžã®äŸå€ïŒã¡ãã»ãŒãžïŒãåºåãããããšãããã
ASP.NET ãšã®äºææ§ããªãããããµãŒãã¹ãã¢ã¯ãã£ãã«ã§ããŸããã ãã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãASP.NET ãšã®äºææ§ãæå¹ã«ãªã£ãŠããŸãã web.config å ã§ ASP.NET ã®äºææ§ã¢ãŒããç¡å¹ã«ãããã RequirementsMode ã« Allowed ãŸã㯠Required ãèšå®ããããµãŒãã¹ã®åã«ã AspNetCompatibilityRequirements 屿§ã远å ããŠãã ããã -
ãã®å Žåã
-
ASP.NET äºææ§
https://msdn.microsoft.com/ja-jp/library/ms752234.aspx[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] public class CalculatorService : ICalculatorSession
ã«ããããã«ããµãŒãã¹ã®ã¯ã©ã¹ã«ã
AspNetCompatibilityRequirements 屿§ã远å ããã
-
-
è£è¶³ïŒãã®äŸå€ãåºãçç±ïŒ: WCF ã¯æ¬æ¥
IIS ã«äŸåããªãïŒèªå·±ãã¹ããã§ããïŒããã
æ¢å®ã§ã¯ ASP.NET ã®ãã€ãã©ã€ã³ã䜿ããªãããæ¢å®ïŒäºæã¢ãŒãç¡ãïŒã èŠæ± â IIS â WCF ãç¬èªã«åŠç â HttpContext.Current 㯠null ã»ãã·ã§ã³ãèªèšŒãCookie ã¯äœ¿ããªã ãASP.NET äºæã¢ãŒãã èŠæ± â IIS â ASP.NET ã®ãã€ãã©ã€ã³ â WCF â HttpContext.Current ã䜿ãã
Web.configã§aspNetCompatibilityEnabled="true"ã«ãããš
ã¢ããªå šäœãäºæã¢ãŒãã«ãªãããã
ãã¹ãŠã®ãµãŒãã¹ ã¯ã©ã¹ã屿§ã§ææè¡šç€ºããå¿ èŠãããã
ãããäŸå€ã¡ãã»ãŒãžã®æå³ã§ããã
屿§ã®å€ æå³ Requiredäºæã¢ãŒãã§ã®ã¿åãïŒHttpContext ã䜿ãïŒ Allowedã©ã¡ãã§ãåã NotAllowedïŒæ¢å®ïŒäºæã¢ãŒãã§ã¯åããªã â ãããäŸå€ã®åå IISã®åäœã¢ãã«ã®
ã¯ã©ã·ãã¯ïŒçµ±åã¢ãŒãã®è©±ãšåããã
**ãASP.NET ã®ãã€ãã©ã€ã³ã«ä¹ããã©ããã**ãšããè«ç¹ã§ããã
ASP.NET Web API ã®å Žå
ASP.NET Web API ã¯ãæ¢å®ã§ JSON.NET ã«ãã£ãŠ Serialize ãããããã®ãããDictionary åãåé¡ãªã Serialize ã§ããã
Web API ã®è¿ã JSON ãã©ãŒãããïŒJSON ã·ãªã¢ã©ã€ãºã®ãã©ãŒãããïŒãWebApiConfigã§ã以äžã®ããã«æå®ã§ããã
// JSON ããŒã¿ã«ã¯CamelCaseãäœ¿çš (JSON.NET)
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();- Web ã¢ããªã±ãŒã·ã§ã³ã«ãWeb API ãäœæããã
public class ValuesController : ApiController
{
// GET api/values
public Sample Get()
{
// JSON ã«ã·ãªã¢ã©ã€ãºããå
ãšãªããªããžã§ã¯ããäœæãã
Sample sample = new Sample()
{
key = new Dictionary<string, string>()
{
{"key1", "value1"},
{"key2", "value2"},
{"key3", "value3"}
}
};
// JSON ãè¿ã
return sample;
}
}
public class Sample
{
public Dictionary<string, string> key { get; set; }
}-
http://ïœ/api/Valuesã«ãªã¯ãšã¹ããéã£ããšãã®å®è¡çµæ
{"key":{"key1":"value1","key2":"value2","key3":"value3"}}- ASP.NET Web API ã®æ³šæç¹
æ¢å®ã§ã¯ãASP.NET Web API ã¯ãHTTP ãªã¯ãšã¹ãã«å«ãŸãã Accept ããããŒã®å 容ã«ãããã¯ã©ã€ã¢ã³ãã«è¿ãããŒã¿ã®åœ¢åŒã決ããããŸãã- Accept ã«
application/xmlãå«ãŸããŠããå Žåã¯ãXML ãšããŠè¿ãããŸããïŒã¬ã¹ãã³ã¹ã® Content-Type ããããŒãapplication/xmlãšãªãïŒ - Accept ã«
application/jsonãå«ãŸããŠããå Žåã¯ãJSON ãšããŠè¿ãããŸããïŒã¬ã¹ãã³ã¹ã® Content-Type ããããŒãapplication/jsonãšãªãïŒ
ãã®ãããåžžã« JSON ãšããŠããŒã¿ãåãåãããå Žåã¯ããªã¯ãšã¹ãããããŒã«Accept: application/jsonãå¿ ãã€ããããã«ããŠãã ããã
- Accept ã«
è£è¶³ïŒã³ã³ãã³ã ããŽã·ãšãŒã·ã§ã³ãåŒãèµ·ããäºæ ïŒ: ãã®ä»æ§ã¯
REST ã®èšèšãšããŠã¯æ£ããããå®åã§ã¯äºæ ã®åå ã«ãªãããéçºæã Postman ã curl ã§ Accept: application/json ãä»ããŠç¢ºèª â JSON ãæ¬çªã ãã©ãŠã¶ããçŽæ¥ã¢ã¯ã»ã¹ïŒAccept: text/html,application/xhtml+xml,...ïŒ â XML ãè¿ã ãJSON ãè¿ã£ãŠããªãããšããåãåãã察åŠã¯ 2 éãããã
ææ®µ å 容 ã¯ã©ã€ã¢ã³ãåŽ æ¬æã®æšå¥šã Accept: application/jsonãå¿ ãä»ãããµãŒãåŽ XML ãã©ãŒããã¿ãå€ãïŒJSON ããè¿ããªããšæ±ºããïŒ // XML ãè¿ããªãããã«ããïŒASP.NET Web APIïŒ config.Formatters.Remove(config.Formatters.XmlFormatter);JSON API ãšæ±ºããŠãããªãããµãŒãåŽã§ XML ãå€ãã®ã
確å®ã§ãäºæ ãæžãããªããASP.NET Core ã§ã¯æ¢å®ã§ JSON ã®ã¿ã§ããã
XML ãè¿ãã«ã¯æç€ºçã«è¿œå ããå¿ èŠããã
ïŒæ¢å®å€ããã宿 ã«å³ãã圢ã«å€ãã£ãïŒã
Java ãªã©ãä»ãã©ãããã©ãŒã ãšã®çžäºéçšãè¡ãªãéã«æ³šæãã¹ãç¹ã
Dictionary åã®ãªããžã§ã¯ããæ±ãå Žåã¯ãJSON.NET ãªã©ããã®ä»ã® Serializer ã䜿çšããã
Java ãªã©ã®ä»ãã©ãããã©ãŒã ãšã®çžäºéçšãèããå Žåã
ãããªã POJO ãŸã㯠POCO ãããŒã¿ã³ã³ãã©ã¯ããšããã
å
ãã¯åºåããã JSON ãã©ãŒãããã確èªããäºããå§ããã
以äžã®æé ã§ã
- åºåããã JSON ãã©ãŒããããæ±ºãã
ïŒãããããŒã¿ã³ã³ãã©ã¯ããšãªãïŒ - ãã®ãã©ãŒãããã«ããããŠã
- Java ã§ããã° POJO
- .NET ã§ããã° POCO
è£è¶³ïŒãã®äž»åŒµãæ¬ããŒãžã§æãéèŠïŒ: ããããªã POCO ã
ããŒã¿ã³ã³ãã©ã¯ããšããªãããšããæéã¯ã
çŸåšã® API èšèšã®æšæºçãªèãæ¹ãã®ãã®ã§ããããã³ãŒã ãã¡ãŒã¹ãïŒæ¬æãæããŠããæ¹ïŒã C# ã®ã¯ã©ã¹ãæžã â ã·ãªã¢ã©ã€ã¶ã JSON ãçæ â ããã仿§ã«ãªã â åé¡ ã»ã·ãªã¢ã©ã€ã¶ãå€ãããš JSON ãå€ããïŒäºææ§ãå£ããïŒ ã».NET ã®åã®éœåã JSON ã«æŒããïŒDictionaryãDateTimeãenumïŒ ã»çžæïŒJava åŽïŒãåã圢ãäœããä¿èšŒãç¡ã ãã¹ããŒã ãã¡ãŒã¹ãïŒæ¬æã®æšå¥šïŒã JSON ã®åœ¢ïŒïŒå¥çŽïŒãå ã«æ±ºãã â åèšèªã§ããã®åœ¢ã«åãã¯ã©ã¹ãäœã â ã»å®è£ æè¡ãå€ããŠãå¥çŽã¯å€ãããªã ã»èšèªéã§ç¢ºå®ã«äžèŽããçŸåšã¯ããã®ãå¥çŽãå ã«æ±ºããããšããäœæ¥ã
**OpenAPIïŒSwaggerïŒ**ãšããŠæšæºåãããŠãã
ïŒSwagger / OpenAPIïŒã
ææ®µ å 容 OpenAPI å®çŸ©ãå ã«æžã YAML/JSON ã§å¥çŽãå®çŸ© ã³ãŒãçæ å®çŸ©ããåèšèªã®ã¯ã©ã€ã¢ã³ãïŒãµãŒãã®ã²ãªåœ¢ãçæ å¥çŽãã¹ã å®è£ ãå®çŸ©ã©ããããèªåæ€èšŒ ã€ãŸããæ¬ããŒãžãè¿°ã¹ãŠããæé ãã
ããŒã«ã«ãã£ãŠèªååããããšããã®ãçŸåšã®ç¶æ³ã§ããã
䞻匵èªäœã¯ä»ãå®å šã«æå¹ã§ããã
è£è¶³ïŒDateTime ã®çžäºéçšãåçš®ã®åé¡ïŒ: æ¬æã¯ Dictionary åã
äŸã«æããŠããããæ¥ä»ã§ãåãåé¡ãèµ·ããã
ã·ãªã¢ã©ã€ã¶ åºå DataContractJsonSerializer "/Date(1234567890000)/"ïŒ.NET ç¬èªåœ¢åŒïŒJSON.NETïŒæ¢å®ïŒ "2025-01-01T00:00:00Z"ïŒISO 8601ïŒSystem.Text.Json "2025-01-01T00:00:00Z"ïŒISO 8601ïŒ
/Date(...)/㯠Java ã JavaScript ããã®ãŸãŸã§ã¯è§£éã§ããªãã
ãããã.NET ã®éœåã JSON ã«æŒããŠãããäŸã§ããã
JSON ãã©ãŒããããå ã«æ±ºããŠããã°é²ããåé¡ã§ããããªãã.NET Core 3.0 以éã¯
System.Text.Jsonãæšæºã§ããã
JSON.NETïŒNewtonsoft.JsonïŒã¯æç€ºçã«è¿œå ãã圢ã«ãªã£ãã
æ°èŠéçºã§ã¯System.Text.Jsonã䜿ãïŒJSONïŒã
Microsoft Azure ãå ¬éããŠãã REST API
æ°åãMicrosoft Azure ãå ¬éããŠãã REST API ãããã¯ã¢ããããã
-
List all virtual machines in a resource group
https://msdn.microsoft.com/en-us/library/azure/mt163572.aspxresourceGroup ã® name ã REST ã® Uri ã«å«ãŸããŠããŠãResponse ã JSON 圢åŒã§è¿ãããŸã
-
Start a virtual machine
https://msdn.microsoft.com/en-us/library/azure/mt163628.aspxResponse ã HTTP 200 ã ãã®ããããŸã
-
Create or update a virtual machine
https://msdn.microsoft.com/en-us/library/azure/mt163591.aspxåŒã³åºããã©ã¡ã¿ã倧ããã倿Žãå ããæäœã¯ãPUT ã§è¡ãããRequest Body ã«ãã©ã¡ã¿ã JSON 圢åŒã§æž¡ãããŸãã
ãããã® REST API ã§ããJSON ã®ãã©ãŒããããæèšãããŠããã
JSON ãã©ãŒãããã¬ãã«ã§ããŒã¿ã³ã³ãã©ã¯ããçµã¶å¿
èŠãããã
ç§»è¡ã¡ã¢ïŒäœè£ïŒ: åå žã®ãResponceãã¯
ãResponseãã®èª€åã§ããããä¿®æ£ããïŒ2 ç®æïŒã
è£è¶³: ããã§æããããŠãã Azure ã® REST API ã¯ã
Azureã®ç®¡çããŒã¿ã«ãšARM APIã§è¿°ã¹ã
ARM API ãã®ãã®ã§ããã
Microsoft èªèº«ããJSON ãã©ãŒããããå¥çŽãšããŠæèšããŠããã
ãšããç¹ããæ¬æã®äž»åŒµã®è£ä»ãã«ãªã£ãŠããããªããARM API ã®å®çŸ©ã¯
OpenAPIïŒSwaggerïŒä»æ§ãšã㊠GitHub ã§å ¬éãããŠãã
ïŒAzure/azure-rest-api-specsïŒã
åèšèªã® SDK ã¯ããããèªåçæãããŠããã
ãŸãã«åæ²ã®ãã¹ããŒã ãã¡ãŒã¹ããã®å®è·µäŸã§ããã
Tags: ç§»è¡, éä¿¡æè¡, .NETéçº, ASP.NET Web API