翻訳のリストを提供する簡単なリソースがあります。get エンドポイントは言語を受け取り、翻訳の辞書を返します。更新は 1 つの翻訳のみに適用されるため、パッチとして行うのが適切であると考えました。
私の API コントローラーでは、put を正常に動作させることができますが、パッチ エンドポイントに対して行う呼び出しで 403 禁止エラーが発生し、その理由がわかりません。
[HttpGet]
// GET api/<controller>
public Dictionary<string,string> Get(String id)
{
return TranslationSvc.GetTranslatedStrings(id);
}
[HttpPatch]
public TranslationEntry Patch(TranslationEntry data)
{//403 prevents this end point from ever executing
if (TranslationSvc.UpdateTranslation(data.Lang, "", data.Translation.Key, data.Translation.Value))
{
return data;
}
else
{
//return a 500 error;
throw new HttpResponseException(HttpStatusCode.InternalServerError);
}
}
[HttpPut]
public TranslationEntry Put(TranslationEntry data)
{//works, but technically a put should be the full resource which is the full collection
if (TranslationSvc.UpdateTranslation(data.Lang, "", data.Translation.Key, data.Translation.Value))
{
return data;
}
else
{
//return a 500 error;
throw new HttpResponseException(HttpStatusCode.InternalServerError);
}
}