api设计 - 关于java 封装某个功能为api形式供其他用户调用的问题
PHP中文网
PHP中文网 2017-04-17 18:01:05
0
4
437

我现在的问题是我需要将某项业务,通过封装为get请求,供其他用户来调用,这样就有一个问题,我应该如何设计这个请求的返回结果的格式?因为有多种类型的返回结果,所以将每种返回结果存放到不同的字段,我现在想到的是给一个flag字段,但是需要调用者根据flag来判断展示结果中的哪个字段,不知道有没有什么更加优雅的实现方式。

PHP中文网
PHP中文网

认证高级PHP讲师

membalas semua(4)
洪涛

Gunakan generik untuk menentukan objek pemulangan

public class ServiceResult<T> {

    private String msg="";//消息说明
    private int resultCode=0;//结果消息代码
    private T data;//返回的数据字段
    
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    public int getResultCode() {
        return resultCode;
    }
    public void setResultCode(int resultCode) {
        this.resultCode = resultCode;
    }
    public T getData() {
        return data;
    }
    public void setData(T data) {
        this.data = data;
    }
    
}

/**
 *
 * 一个service对象
 */
public class MyServices {

    public  List<User> getUserList(){
        
        return new ArrayList<User>();
    }
    
    public  User getUserByID(Long userId){
        
        return new User();
    }
}

/**
 *  user
 */
class User{
    private String name;
    private Long id;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    
}

/**
 * request调用
 */
public class UserRequestObject {

    public void doReuest(String requestType){
        MyServices someMyServices=new MyServices();
        if(requestType.equals("userList")){
            
            ServiceResult<List<User>> result=new ServiceResult<List<User>>();
            result.setData(someMyServices.getUserList());
            
        }else if (requestType.equals("user")){
            ServiceResult<User> result=new ServiceResult<User>();
            result.setData(someMyServices.getUserByID(0L));
        }else{
            ServiceResult<Void> result=new ServiceResult<Void>();
            result.setData(null);
        }
        
        //数据转成JSON格式,返回给调用者
    }
}
PHPzhong

Secara umumnya, anda boleh menentukan format pemulangan seperti berikut. resultCode mentakrifkan pelbagai jenis pulangan Contohnya, kecuali untuk resultCode, iaitu 0, semua yang lain adalah salah dan errorMsg mempunyai arahan tertentu Objek pemulangan perniagaan biasa diterangkan oleh result , di mana kita boleh mentakrifkan pelbagai rebat Jenis pulangan, sebagai contoh, anda boleh menggunakan resultType untuk mewakili jenis berbilang medan membalut jenis hasil yang berbeza jika perbezaannya tidak besar, anda tidak semestinya memerlukan berbilang medan, hanya satu medan (kandungan medan di dalam boleh jadi null) .


{
    String resultCode;
    String errorMsg;
    Object result;
}

result描述:
{
    String resultType;
    ResultForm resultForm;
}
洪涛

Jika ia adalah http, anda boleh menggunakan pengepala untuk menghantar format permintaan, dan kemudian antara muka menentukan format respons yang sepadan. Bukan HTTP juga serupa. Pemanggil menyediakan format atau medan yang diperlukan, dan pelayan boleh memberikan hasil yang berbeza mengikut pengenalan.

洪涛
{
    String code;
    String msg;
    Object result;
}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan