如何从控制器中确定给定请求的IP地址?例如(快递):
app.post('/get/ip/address', function (req, res) {
// need access to IP address here
})
Run Code Online (Sandbox Code Playgroud) 这是我到目前为止的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System;
using System.Net.Http;
using System.Web;
using System.Net;
using System.IO;
namespace ConsoleProgram
{
public class Class1
{
private const string URL = "https://sub.domain.com/objects.json?api_key=123";
private const string DATA = @"{""object"":{""name"":""Name""}}";
static void Main(string[] args)
{
Class1.CreateObject();
}
private static void CreateObject()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
request.Method = "POST";
request.ContentType = "application/json";
request.ContentLength = DATA.Length;
StreamWriter requestWriter = new StreamWriter(request.GetRequestStream(), System.Text.Encoding.ASCII);
requestWriter.Write(DATA);
requestWriter.Close();
try {
WebResponse webResponse = request.GetResponse();
Stream webStream = …Run Code Online (Sandbox Code Playgroud) 服务提供者接口(SPI)和应用程序编程接口(API)之间有什么区别?
更具体地说,对于Java库,是什么使它们成为API和/或SPI?
我们的客户给了我一个REST API,我需要对它进行PHP调用.但事实上,API提供的文档非常有限,所以我真的不知道如何调用该服务.
我试过谷歌它,但唯一出现的是已经过期的雅虎!关于如何调用服务的教程.没有提到标题或任何深度信息.
是否有关于如何调用REST API或有关它的一些文档的正确信息?因为即使在W3schools上,他们也只描述了SOAP方法.在PHP中制作rest API有哪些不同的选择?
我需要检查我的注册接收者是否仍然注册,如果不是我如何检查任何方法?
api android broadcastreceiver android-broadcast android-broadcastreceiver
在java中使setter返回"this"是一个好主意还是坏主意?
public Employee setName(String name){
this.name = name;
return this;
}
Run Code Online (Sandbox Code Playgroud)
这种模式很有用,因为你可以链接这样的setter:
list.add(new Employee().setName("Jack Sparrow").setId(1).setFoo("bacon!"));
Run Code Online (Sandbox Code Playgroud)
而不是这个:
Employee e = new Employee();
e.setName("Jack Sparrow");
...and so on...
list.add(e);
Run Code Online (Sandbox Code Playgroud)
......但这有点违反标准惯例.我想这可能是值得的,因为它可以让那个setter做一些有用的东西.我已经看到这种模式使用了一些地方(例如JMock,JPA),但它似乎并不常见,并且通常仅用于定义良好的API,其中此模式随处可用.
更新:
我所描述的内容显然是有效的,但我真正想要的是关于这是否普遍可以接受,以及是否存在任何陷阱或相关最佳实践的一些想法.我知道Builder模式,但它比我描述的要多一些 - 正如Josh Bloch描述的那样,有一个关联的静态Builder类用于创建对象.
我正在寻找一个可以用来调用基于Web的REST API的服务.
基本上我想在app init上启动服务然后我希望能够要求该服务请求URL并返回结果.与此同时,我希望能够显示进度窗口或类似的东西.
我已经创建了一个目前使用IDL的服务,我已经阅读过你只需要这个用于跨应用程序通信的地方,所以请考虑这些需求,但不确定如何在没有它的情况下进行回调.此外,当我点击post(Config.getURL("login"), values)应用程序似乎暂停一段时间(似乎很奇怪 - 认为服务背后的想法是它运行在不同的线程!)
目前我有一个带post的服务,里面有http方法,一些AIDL文件(用于双向通信),一个ServiceManager,它处理启动,停止,绑定等服务,我正在动态创建一个具有特定代码的Handler根据需要进行回调.
我不希望任何人给我一个完整的代码库来工作,但一些指针将不胜感激.
代码(大部分)已满:
public class RestfulAPIService extends Service {
final RemoteCallbackList<IRemoteServiceCallback> mCallbacks = new RemoteCallbackList<IRemoteServiceCallback>();
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
}
public IBinder onBind(Intent intent) {
return binder;
}
public void onCreate() {
super.onCreate();
}
public void onDestroy() {
super.onDestroy();
mCallbacks.kill();
}
private final IRestfulService.Stub binder = new IRestfulService.Stub() {
public void doLogin(String username, String password) {
Message msg = new Message();
Bundle data = new …Run Code Online (Sandbox Code Playgroud) 我想尽可能多地收集有关.NET/CLR中API版本控制的信息,特别是API更改如何破坏客户端应用程序.首先,让我们定义一些术语:
API更改 - 类型的公开可见定义的更改,包括其任何公共成员.这包括更改类型和成员名称,更改类型的基本类型,从类型的已实现接口列表添加/删除接口,添加/删除成员(包括重载),更改成员可见性,重命名方法和类型参数,添加默认值对于方法参数,在类型和成员上添加/删除属性,以及在类型和成员上添加/删除泛型类型参数(我错过了什么吗?).这不包括成员团体的任何变化,或私人成员的任何变化(即我们不考虑反射).
二进制级别中断 - 一种API更改,导致针对旧版本API编译的客户端程序集可能无法加载新版本.示例:更改方法签名,即使它允许以与之前相同的方式调用(即:void返回类型/参数默认值重载).
源级别中断 - 一种API更改,导致编写现有代码以针对旧版本的API进行编译,可能无法使用新版本进行编译.然而,已经编译的客户端程序集像以前一样工作.示例:添加一个新的重载,这可能导致前一个明确的方法调用不明确.
源级安静语义更改 - 一种API更改导致编写的现有代码针对旧版API进行编译,从而悄然改变其语义,例如通过调用不同的方法.但是,代码应该继续编译而不会出现警告/错误,以前编译的程序集应该像以前一样工作.示例:在现有类上实现新接口,导致在重载解析期间选择不同的重载.
最终目标是尽可能地对尽可能多的破坏和静默语义API更改进行编目,并描述破坏的确切影响,以及哪些语言受其影响并且不受其影响.扩展后者:虽然一些变化普遍影响所有语言(例如,向接口添加新成员将破坏任何语言中该接口的实现),但有些需要非常特定的语言语义才能进入游戏以获得休息.这通常涉及方法重载,并且通常涉及与隐式类型转换有关的任何事情.似乎没有任何方法可以在这里定义"最小公分母",即使对于符合CLS的语言(即至少符合CLI规范中定义的"CLS使用者"规则的那些语言) - 尽管我会很感激,如果有人在这里纠正我错了 - 所以这必须按语言去语言.那些最感兴趣的东西自然就是开箱即用的.NET:C#,VB和F#; 但其他人,如IronPython,IronRuby,Delphi Prism等也是相关的.它的角落越多,它就越有趣 - 删除成员之类的东西是不言而喻的,但是例如方法重载,可选/默认参数,lambda类型推断和转换运算符之间的微妙交互可能会非常令人惊讶有时.
举几个例子来启动这个:
种类:源级休息
受影响的语言:C#,VB,F#
更改前的API:
public class Foo
{
public void Bar(IEnumerable x);
}
Run Code Online (Sandbox Code Playgroud)
更改后的API:
public class Foo
{
public void Bar(IEnumerable x);
public void Bar(ICloneable x);
}
Run Code Online (Sandbox Code Playgroud)
示例客户端代码在更改之前工作并在其之后中断:
new Foo().Bar(new int[0]);
Run Code Online (Sandbox Code Playgroud)
种类:源级休息.
受影响的语言:C#,VB
语言不受影响:F#
更改前的API:
public class Foo
{
public static implicit operator int ();
}
Run Code Online (Sandbox Code Playgroud)
更改后的API:
public class Foo
{
public static implicit operator int …Run Code Online (Sandbox Code Playgroud) 在创建REST API时,API中的命名约定是否有任何指导或事实标准(例如:URL端点路径组件,查询字符串参数)?骆驼帽是常态还是下划线?其他?
例如:
api.service.com/helloWorld/userId/x
Run Code Online (Sandbox Code Playgroud)
要么
api.service.com/hello_world/user_id/x
Run Code Online (Sandbox Code Playgroud)
注意:这不是RESTful API设计的问题,而是用于最终路径组件和/或查询字符串参数的命名约定准则.
任何指导方针将不胜感激.
api ×10
rest ×4
web-services ×3
android ×2
java ×2
.net ×1
c# ×1
clr ×1
ip ×1
node.js ×1
oop ×1
php ×1
terminology ×1
versioning ×1