小编Dar*_*ler的帖子

RESTful密码重置

构建RESTful资源以重置密码的正确方法是什么?

此资源旨在成为丢失或忘记密码的人的密码重置程序.它使旧密码无效并通过电子邮件向他们发送密码.

我有两个选择:

POST /reset_password/{user_name}
Run Code Online (Sandbox Code Playgroud)

要么...

POST /reset_password
   -Username passed through request body
Run Code Online (Sandbox Code Playgroud)

我很确定请求应该是POST.我没有信心选择一个合适的名字.而且我不确定是否应该通过URL或请求正文传递user_name.

rest password-recovery

96
推荐指数
7
解决办法
6万
查看次数

如何在.NET测试中传入一个模拟的HttpClient?

我有一个Microsoft.Net.Http用于检索一些Json数据的服务.大!

当然,我不希望我的单元测试击中实际的服务器(否则,这是一个集成测试).

这是我的服务ctor(使用依赖注入......)

public Foo(string name, HttpClient httpClient = null)
{
...
}
Run Code Online (Sandbox Code Playgroud)

我不知道我怎么可以......比如嘲笑这个.. MoqFakeItEasy.

我想确保当我的服务电话GetAsyncPostAsync..然后我可以伪造这些电话.

有什么建议我怎么做?

我希望 - 我不需要制作我自己的Wrapper ..因为这是废话:(微软不能对此进行疏忽,对吧?

(是的,它很容易制作包装..我之前已经完成了它们......但这是重点!)

.net c# mocking microsoft-fakes dotnet-httpclient

55
推荐指数
2
解决办法
2万
查看次数

重试HttpClient不成功的请求

我正在构建一个给出HttpContent对象的函数,它将发出请求并在失败时重试.但是我得到异常,说HttpContent对象在发出请求后被处理掉.无论如何都要复制或复制HttpContent对象,以便我可以发出多个请求.

 public HttpResponseMessage ExecuteWithRetry(string url, HttpContent content)
 {
  HttpResponseMessage result = null;
  bool success = false;
  do
  {
      using (var client = new HttpClient())
      {
          result = client.PostAsync(url, content).Result;
          success = result.IsSuccessStatusCode;
      }
  }
  while (!success);

 return result;
} 

// Works with no exception if first request is successful
ExecuteWithRetry("http://www.requestb.in/xfxcva" /*valid url*/, new StringContent("Hello World"));
// Throws if request has to be retried ...
ExecuteWithRetry("http://www.requestb.in/badurl" /*invalid url*/, new StringContent("Hello World"));
Run Code Online (Sandbox Code Playgroud)

(显然我不会无限期地尝试,但上面的代码基本上就是我想要的).

它产生了这个例外

System.AggregateException: One or more errors occurred. ---> System.ObjectDisposedException: …
Run Code Online (Sandbox Code Playgroud)

c# httpcontent dotnet-httpclient

40
推荐指数
6
解决办法
6万
查看次数

为什么人们希望将Json和XML作为输出提供给他们的REST接口?

我理解为什么"REST框架"供应商想要提供返回基于Json的表示和基于XML的表示的支持,但为什么人们想要从同一服务返回两者

  • 是因为您将拥有构建在没有可用Json解析器的平台上的客户端应用程序吗?

  • 是因为您希望更广泛地采用界面,因为您可以吸引更多人

  • 是因为您认为所有RESTful接口遵循的 标准约定

如果你确实交付了两个:

您是否避免使用XML中的命名空间以使其与Json格式兼容?或者您是否只有一个名称空间用于所有数据元素?

您是否有某种标准化机制将属性和元素映射到某种一致的Json格式,或者您只是避免XML中的属性?

您是为每个表示创建不同的端点,还是使用内容协商来提供所请求的格式?你有默认格式吗?

如果您在可编辑资源上使用缓存并使用不同的URL,那么如何确保当一个表示失效时其他表示也是无效的?

您觉得支持多种格式的好处是值得的吗?

答复摘要:

所以主要原因似乎是偏好.一些开发人员更喜欢花括号,有些人更喜欢尖括号.

有些人希望从XML迁移到Json,因此需要支持两者才能实现向后兼容.

有些人想使用Json,但担心一些开发人员害怕Json,所以他们支持两者以免冒犯任何人.

在框架XYZ中很容易打开功能,为什么不呢!

另一个有趣的建议原因是,JSON可以用来提供快速的脏数据摘要,XML可以用作语义丰富的完整表示.

xml rest json web-services

39
推荐指数
2
解决办法
3869
查看次数

ASP.net Web API RESTful Web服务+基本身份验证

我正在使用ASP.Net Web Api实现RESTful Web服务.我已经得出结论,使用基本身份验证+ SSL来执行身份验证部分.实现它的最佳/正确方法是什么?

我的第一次尝试是手动执行,解析Authorization标头,根据我的数据库解码和验证用户.它有效,但我想知道我是否遗漏了一些东西.

我见过一些使用用户角色和主体的解决方案.虽然我不确定这些实际上做了什么,但我几乎肯定我不需要这些,因为在我的数据库中我定义了自己的用户和他们的角色.

我还没有完全理解的是,服务的消费者是否必须在每个请求中发送凭据,或者以某种方式缓存它们.我的服务是否应该为了实现这一点而做某事,或者完全取决于消费者来处理这个问题?

关于客户端使用javascript发出请求的最后一个问题.如果他们尝试使用该服务,是否会出现"跨域请求"问题?

restful-authentication basic-authentication asp.net-web-api

34
推荐指数
2
解决办法
7万
查看次数

使http客户端同步:等待响应

我有一些文件要上传,一些文件失败,因为帖子是异步的而不是同步的..

我正在尝试将此调用作为同步调用..

我想等待回应.

如何将此调用设为同步?

static async Task<JObect> Upload(string key, string url, string 
                                 sourceFile, string targetFormat)
{ 
    using (HttpClientHandler handler = new HttpClientHandler { 
                                           Credentials = new NetworkCredential(key, "") 
                                       })
    using (HttpClient client = new HttpClient(handler))
    {
         var request = new MultipartFormDataContent();
         request.Add(new StringContent(targetFormat), "target_format");
         request.Add(new StreamContent(File.OpenRead(sourceFile)),
                                       "source_file",
                                        new FileInfo(sourceFile).Name);

        using (HttpResponseMessage response = await client.PostAsync(url,
                                                           request).ConfigureAwait(false))

        using (HttpContent content = response.Content)
        {
            string data = await content.ReadAsStringAsync().ConfigureAwait(false);
            return JsonObject.Parse(data);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

任何帮助赞赏!

c# httpresponse dotnet-httpclient

30
推荐指数
2
解决办法
7万
查看次数

什么是Swagger,Swashbuckle和Swashbuckle UI

这是我的理解:

  • Swagger是编写文档的符号/规则.但为什么它被称为框架(如Angular/MVC)?
  • Swashbuckle是一个程序(JavaScript?),它生成文档(基于Swagger规则).
  • Swagger UI显示文档.它使用Swashbuckle来做到这一点.

这些信息是否正确?如果没有,有人能用简单的术语解释什么是Swagger,Swashbuckle和Swashbuckle UI意味着什么?

另外,如果我不使用它,我作为API开发人员会失去什么?

swagger swagger-ui swashbuckle openapi.net

27
推荐指数
1
解决办法
8135
查看次数

WCF Web API与ASP.NET MVC JSON Web服务

使用新的WCF Web API而不是ASP.NET MVC 3来公开轻量级JSON Web服务层有什么优势?我在很多方面都喜欢Web API,但缺点是它不能在单声道上工作,而MVC 3则可以.这两种方法有哪些主要区别?

.net rest wcf asp.net-mvc-3 wcf-web-api

25
推荐指数
2
解决办法
1万
查看次数

如何从Java与OData交互?

OData是微软重新打包其Astoria(现在的WCF数据服务)RESTful查询/更新协议.如果我想使用Java创建兼容OData的数据源,我该怎么做?同样,如果我想从Java使用OData数据源,我该怎么做?

http://www.odata.org/

部分答案如下.

OData网站建议Restlet支持OData.Restlet的API文档提到了org.restlet.ext.odata包.

www.restlet.org/

www.restlet.org/documentation/snapshot/jee/ext/org/restlet/ext/odata/package-summary.html

这是唯一的答案吗?是否有关于进行此集成的博客文章?

java rest astoria restlet odata

23
推荐指数
3
解决办法
3万
查看次数

带有BaseAddress的HttpClient

我在使用HttpClientBaseAddress属性调用webHttpBinding WCF端点时遇到问题.

HttpClient的

我创建了一个HttpClient实例,将BaseAddress属性指定为本地主机端点.

在此输入图像描述

GetAsync Call

然后我调用GetAsync方法传递额外的Uri信息.

HttpResponseMessage response = await client.GetAsync(string.Format("/Layouts/{0}", machineInformation.LocalMachineName()));
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

服务端点

[OperationContract]
[WebGet(UriTemplate = "/Layouts/{machineAssetName}", ResponseFormat = WebMessageFormat.Json)]
List<LayoutsDto> GetLayouts(string machineAssetName);
Run Code Online (Sandbox Code Playgroud)

问题

我遇到的问题是,是,/AndonService.svc所述BaseAddress的一部分被截断,从而将得到的呼叫转到https://localhost:44302/Layouts/1100-00277宁可https://localhost:44302/AndonService.svc/Layouts/1100-00277导致404未找到.

是否有理由在GetAsync调用中截断BaseAddress?我该如何解决这个问题?

.net c# wcf webhttpbinding dotnet-httpclient

23
推荐指数
1
解决办法
2万
查看次数