色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Restful風(fēng)格對(duì)接接口使用的規(guī)范

科技綠洲 ? 來(lái)源:猿小馬 ? 作者:猿小馬 ? 2023-10-16 10:16 ? 次閱讀

概要

本實(shí)例適合所有的開發(fā),不僅僅是前后端分離項(xiàng)目,不分離項(xiàng)目使用的AJAX請(qǐng)求后臺(tái)也可以使用!

例如:

/**
	初學(xué)者都喜歡使用@RequestMapping注解直接在Controller的方法中進(jìn)行映射
 */
	@RequestMapping("/queryById")
    public Demo queryById(Integer id) {
        ......
    }

大多數(shù)接口都包含新增、刪除、修改、分頁(yè)查詢、部分也查詢、按ID查詢等6個(gè)接口,這樣如果業(yè)務(wù)復(fù)雜的請(qǐng)求,一個(gè)Controller里面有過(guò)多的@RequestMapping映射,那里面映射的單詞都不一樣,那樣開發(fā)出來(lái)的代碼一眼看就是很糟糕!!

使用Restful風(fēng)格只有在Controller類上有@RequestMapping注解,其中的方法只對(duì)應(yīng)請(qǐng)求方式,比如分頁(yè)查詢的get請(qǐng)求直接使用 @GetMapping在方法上即可!如果有過(guò)多的get請(qǐng)求比如通過(guò)id查詢則使用地址傳參的方式 @GetMapping("{id}")然后在方法參數(shù)中加入@PathVariable("id") Integer id即可使用參數(shù)id!

@GetMapping("{id}")
    public Demo queryById(@PathVariable("id") Integer id) {
       ....
    }

以上只是對(duì)請(qǐng)求方式以及請(qǐng)求參數(shù)的一種寫法,這里還有就是返回參數(shù)的問(wèn)題,在所有的接口請(qǐng)求中都會(huì)有著不同的返回,上面都是返回的一個(gè)Demo的實(shí)體對(duì)象,但是在業(yè)務(wù)操作中,比如再獲取列表的接口,那我們就需要返回的是一個(gè)集合,如果是修改的接口,那我們可能返回的是一個(gè)是否修改成功的標(biāo)識(shí),那樣一個(gè)Controller里面就很繁瑣了,如果遇到外鍵查詢可能不是一個(gè)實(shí)體的對(duì)象,則就需要單獨(dú)處理,所以我自己使用的就是一個(gè)封裝的一個(gè)返回對(duì)象JsonWrite

package com.ww.talk.util;

/**
 * @author maker
 * @desc 后臺(tái)返回前臺(tái)json格式
 */
public class JsonWrite {
    public JsonWrite() {
    }

    /**
     * 狀態(tài)碼
     */
    private String code;
    /**
     * 是否成功
     */
    private boolean success;


    /**
     * 提示消息
     */
    private String msg;
    /**
     * 返回的數(shù)據(jù)
     */
    private Object data;

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public boolean isSuccess() {
        return success;
    }

    public void setSuccess(boolean success) {
        this.success = success;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }

    public JsonWrite(String code, boolean success, String msg) {
        this.code = code;
        this.success = success;
        this.msg = msg;
    }


    public JsonWrite(String code, boolean success, String msg, Object data) {
        this.code = code;
        this.success = success;
        this.msg = msg;
        this.data = data;
    }

    /**
     * 自定義返回內(nèi)容
     *
     * @param code
     * @param success
     * @param msg
     * @param data
     * @return
     */
    public static JsonWrite CUSTOMIZE(String code, boolean success, String msg, Object data) {
        JsonWrite jsonWrite = new JsonWrite();
        jsonWrite.setCode(code);
        jsonWrite.setSuccess(success);
        jsonWrite.setMsg(msg);
        jsonWrite.setData(data);
        return jsonWrite;
    }

    /**
     * 自定義返回內(nèi)容
     *
     * @param code
     * @param success
     * @param msg
     * @return
     */
    public static JsonWrite CUSTOMIZE(String code, boolean success, String msg) {
        JsonWrite jsonWrite = new JsonWrite();
        jsonWrite.setCode(code);
        jsonWrite.setSuccess(success);
        jsonWrite.setMsg(msg);
        return jsonWrite;
    }

    /**
     * 操作成功,無(wú)數(shù)據(jù)傳遞
     *
     * @return
     */
    public static JsonWrite SUCCESS() {
        JsonWrite jsonWrite = new JsonWrite();
        jsonWrite.setCode(StatusCode.SUCCESS.getCode());
        jsonWrite.setSuccess(true);
        jsonWrite.setMsg(StatusCode.SUCCESS.getMsg());
        return jsonWrite;
    }

    /**
     * 操作成功,傳遞數(shù)據(jù)
     *
     * @return
     */
    public static JsonWrite SUCCESS(Object data) {
        JsonWrite jsonWrite = new JsonWrite();
        jsonWrite.setCode(StatusCode.SUCCESS.getCode());
        jsonWrite.setSuccess(true);
        jsonWrite.setMsg(StatusCode.SUCCESS.getMsg());
        jsonWrite.setData(data);
        return jsonWrite;
    }

    /**
     * 操作失敗,無(wú)數(shù)據(jù)傳遞
     *
     * @return
     */
    public static JsonWrite ERROR() {
        JsonWrite jsonWrite = new JsonWrite();
        jsonWrite.setCode(StatusCode.SUCCESS.getCode());
        jsonWrite.setSuccess(false);
        jsonWrite.setMsg(StatusCode.SUCCESS.getMsg());
        return jsonWrite;
    }

    /**
     * 操作失敗,傳遞數(shù)據(jù)
     *
     * @param data
     * @return
     */
    public static JsonWrite ERROR(Object data) {
        JsonWrite jsonWrite = new JsonWrite();
        jsonWrite.setCode(StatusCode.SUCCESS.getCode());
        jsonWrite.setSuccess(false);
        jsonWrite.setMsg(StatusCode.SUCCESS.getMsg());
        jsonWrite.setData(data);
        return jsonWrite;
    }

    /**
     * 操作成功,自定義消息
     *
     * @param msg
     * @return
     */
    public static JsonWrite SUCCESS(String msg) {
        JsonWrite jsonWrite = new JsonWrite();
        jsonWrite.setCode(StatusCode.SUCCESS.getCode());
        jsonWrite.setSuccess(true);
        jsonWrite.setMsg(msg);
        return jsonWrite;
    }

    /**
     * 操作成功,傳遞數(shù)據(jù)及自定義消息
     *
     * @param msg
     * @param data
     * @return
     */
    public static JsonWrite SUCCESS(String msg, Object data) {
        JsonWrite jsonWrite = new JsonWrite();
        jsonWrite.setCode(StatusCode.SUCCESS.getCode());
        jsonWrite.setSuccess(true);
        jsonWrite.setMsg(msg);
        jsonWrite.setData(data);
        return jsonWrite;
    }

    /**
     * 操作失敗,自定義消息
     *
     * @param msg
     * @return
     */
    public static JsonWrite ERROR(String msg) {
        JsonWrite jsonWrite = new JsonWrite();
        jsonWrite.setCode(StatusCode.SUCCESS.getCode());
        jsonWrite.setSuccess(false);
        jsonWrite.setMsg(msg);
        return jsonWrite;
    }

    /**
     * 操作失敗,傳遞數(shù)據(jù)以及自定義消息
     *
     * @param msg
     * @param data
     * @return
     */
    public static JsonWrite ERROR(String msg, Object data) {
        JsonWrite jsonWrite = new JsonWrite();
        jsonWrite.setCode(StatusCode.SUCCESS.getCode());
        jsonWrite.setSuccess(false);
        jsonWrite.setMsg(msg);
        jsonWrite.setData(data);
        return jsonWrite;
    }

    /**
     * 系統(tǒng)錯(cuò)誤
     */
    public static JsonWrite SYSTEMERROR(String msg, Object data){
        JsonWrite jsonWrite = new JsonWrite();
        jsonWrite.setCode(StatusCode.SERVERERROR.getCode());
        jsonWrite.setSuccess(false);
        jsonWrite.setMsg(msg);
        jsonWrite.setData(data);
        return jsonWrite;
    }
}

可以看到我們的返回實(shí)體JsonWrite有很多的構(gòu)造方法,這樣可以滿足多種返回格式!比如之前上面的通過(guò)id請(qǐng)求的結(jié)果我們可以寫成:

/**
     * 通過(guò)主鍵查詢單條數(shù)據(jù)
     *
     * @param id 主鍵
     * @return 單條數(shù)據(jù)
     */
    @GetMapping("{id}")
    public JsonWrite queryById(@PathVariable("id") Integer id) {
        return JsonWrite.SUCCESS(this.userService.queryById(id));
    }

因?yàn)橥ㄟ^(guò)ID查詢一般不會(huì)出現(xiàn)查詢錯(cuò)誤的情況,所以直接就是使用的SUCCESS的方法返回!

介紹

提示:上面的定義的JsonWrite類中也有其他的輔助類:StatusCode(返回狀態(tài)碼枚舉)

public enum StatusCode {
    /**
     * 狀態(tài)碼
     */
    SUCCESS("200", "OK"),
    BADREQUIRED("400", "Bad Request"),
    ACCESSERROR("401", "Access-Token Error"),
    AUTHERROR("403", "沒(méi)有權(quán)限"),
    NOTFOUND("404", "Not Found"),
    SERVERERROR("500", "Internal Server Error"),
    REPEAT("600", "Repeat request,Request Forbidden"),
    BADGATEWAY("502", "Bad Gateway"),
    SERVICEUNAVAILABLE("503", "Service Unavailable"),
    ACCOUNT_ERROR("1000", "賬戶不存在或被禁用"),
    API_NOT_EXISTS("1001", "請(qǐng)求的接口不存在"),
    API_NOT_PER("1002", "沒(méi)有該接口的訪問(wèn)權(quán)限"),
    PARAMS_ERROR("1004", "參數(shù)錯(cuò)誤或格式錯(cuò)誤"),
    SIGN_ERROR("1005", "數(shù)據(jù)簽名錯(cuò)誤"),
    API_DISABLE("1011", "查詢權(quán)限已被限制"),
    UNKNOWN_IP("1099", "非法IP請(qǐng)求");

    /**
     * 狀態(tài)碼
     */
    private String code;
    /**
     * 狀態(tài)描述
     */
    private String msg;

    public String getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }

    StatusCode(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }
}

不同的返回狀態(tài)嗎對(duì)應(yīng)著不同的含義!這樣前端人員調(diào)用接口之后看到了返回狀態(tài)碼就知道對(duì)應(yīng)的是什么問(wèn)題,只有狀態(tài)碼為200的時(shí)候才是正常的返回正確結(jié)果!這也是一種對(duì)于前后端的規(guī)范!

案例

提示:這里我們編寫了一個(gè)案例,大家可以對(duì)照案例理解一下思路!

package com.ww.talk.controller;

import com.ww.talk.util.JsonWrite;
import com.ww.talk.util.TableGrid;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * (User)表控制層
 *
 * @author makejava
 */
@RestController
@RequestMapping("user")
public class UserController {
    /**
     * 服務(wù)對(duì)象
     */
    @Resource
    private UserService userService;
    /**
     * 分頁(yè)查詢
     *
     * @param tableGrid  篩選條件
     * @return 查詢結(jié)果
     */
    @GetMapping
    public JsonWrite queryByPage(TableGrid tableGrid) {
        return JsonWrite.SUCCESS(this.userService.queryByPage(tableGrid));
    }

    /**
     * 通過(guò)主鍵查詢單條數(shù)據(jù)
     *
     * @param id 主鍵
     * @return 單條數(shù)據(jù)
     */
    @GetMapping("{id}")
    public JsonWrite queryById(@PathVariable("id") Integer id) {
        return JsonWrite.SUCCESS(this.userService.queryById(id));
    }

    /**
     * 新增數(shù)據(jù)
     *
     * @param user 實(shí)體
     * @return 新增結(jié)果
     */
    @PostMapping
    public JsonWrite add(@RequestBody User user) {
        return this.userService.insert(user);
    }

    /**
     * 編輯數(shù)據(jù)
     *
     * @param user 實(shí)體
     * @return 編輯結(jié)果
     */
    @PutMapping
    public JsonWrite edit(@RequestBody User user) {
        return this.userService.update(user);
    }

    /**
     * 刪除數(shù)據(jù)
     *
     * @param id 主鍵
     * @return 刪除是否成功
     */
    @DeleteMapping("{id}")
    public JsonWrite deleteById(@PathVariable("id") Integer id) {
        return this.userService.deleteById(id);
    }
}

分析:

上面我們創(chuàng)建了一個(gè)UserController類,使用@RequestMapping(“user”)注解,這樣前端使用user接口調(diào)用都是進(jìn)入此類中查詢對(duì)應(yīng)的接口;然后我們定義了五個(gè)基礎(chǔ)方法,分別是:分頁(yè)查詢、通過(guò)注解id查詢、新增、修改和刪除;下面我們分析這五個(gè)接口對(duì)應(yīng)的寫法

  • 分頁(yè)查詢:
/**
     * 分頁(yè)查詢
     *
     * @param tableGrid  篩選條件
     * @return 查詢結(jié)果
     */
    @GetMapping
    public JsonWrite queryByPage(TableGrid tableGrid) {
        return JsonWrite.SUCCESS(this.userService.queryByPage(tableGrid));
    }

查詢都是Get請(qǐng)求,這個(gè)不用多說(shuō)!前端使用接口名稱/user,并使用的是Get請(qǐng)求,則會(huì)進(jìn)入方法中,方法參數(shù)是封裝的分頁(yè)實(shí)體,因?yàn)椴樵兞斜淼姆椒ㄒ彩遣豢赡苡袠I(yè)務(wù)判斷或者業(yè)務(wù)報(bào)錯(cuò)的,所以直接使用JsonWrite.SUCCESS返回給前端,查詢的數(shù)據(jù)是通過(guò)userService.queryByPage在userService的服務(wù)層處理,而JsonWrite.SUCCESS參數(shù)就是我們封裝的JsonWrite返回到前端的data屬性,前端在實(shí)體中通過(guò).data獲取返回的查詢到的數(shù)據(jù)!

  • 通過(guò)注解id查詢
/**
     * 通過(guò)主鍵查詢單條數(shù)據(jù)
     *
     * @param id 主鍵
     * @return 單條數(shù)據(jù)
     */
    @GetMapping("{id}")
    public JsonWrite queryById(@PathVariable("id") Integer id) {
        return JsonWrite.SUCCESS(this.userService.queryById(id));
    }

同樣是獲取數(shù)據(jù)的Get請(qǐng)求,前端使用接口名稱/user/3,這里的3是指要查詢的數(shù)據(jù)id,方法正確使用get請(qǐng)求之后進(jìn)入此方法中,通過(guò)@PathVariable("id")注解后臺(tái)可以直接使用到參數(shù)id,由于通過(guò)id查詢的這個(gè)id肯定是數(shù)據(jù)庫(kù)存在的,所以這里同樣使用JsonWrite.SUCCESS直接成功返回?cái)?shù)據(jù)!

  • 新增
/**
     * 新增數(shù)據(jù)
     *
     * @param user 實(shí)體
     * @return 新增結(jié)果
     */
    @PostMapping
    public JsonWrite add(@RequestBody User user) {
        return this.userService.insert(user);
    }

新增為Post請(qǐng)求,咱們不多說(shuō)!前端使用/user接口以及Post請(qǐng)求方式將會(huì)進(jìn)入此方法中,前端傳入的是一個(gè)實(shí)體對(duì)象,所以我們使用@RequestBody來(lái)注明我們接受的數(shù)據(jù)是一個(gè)User對(duì)象,因?yàn)樾略龅臅r(shí)候一般會(huì)有業(yè)務(wù)判斷,比如用戶名是否存在之類的,如果重復(fù)了存在了則是新增失敗,所以我們?cè)貱ontroller中返回的是一個(gè)userService.insert服務(wù)層返回的結(jié)果,我們看下服務(wù)層代碼:

/**
     * 新增數(shù)據(jù)
     *
     * @param user 實(shí)例對(duì)象
     * @return 實(shí)例對(duì)象
     */
    @Override
    public JsonWrite insert(User user) {
        int count = this.userDao.insert(user);
        if(count >0){
            return JsonWrite.SUCCESS("數(shù)據(jù)新增成功!");
        }else{
            return JsonWrite.ERROR("數(shù)據(jù)新增失敗,請(qǐng)檢查數(shù)據(jù)!");
        }
    }

這里在服務(wù)層的新增接口中可以看到,這里是做了一個(gè)簡(jiǎn)單的判斷,因?yàn)閷?duì)于mysql來(lái)說(shuō),執(zhí)行新增操作如果成功會(huì)返回執(zhí)行成功的條數(shù),也就是新增一條數(shù)據(jù)成功會(huì)返回一個(gè)Integer類型的1,如果失敗則為0,直接判斷count執(zhí)行數(shù)據(jù)庫(kù)的結(jié)果來(lái)返回?cái)?shù)據(jù),前端使用JsonWrite的success屬性是否為true來(lái)判斷是否成功!

  • 修改
/**
     * 編輯數(shù)據(jù)
     *
     * @param user 實(shí)體
     * @return 編輯結(jié)果
     */
    @PutMapping
    public JsonWrite edit(@RequestBody User user) {
        return this.userService.update(user);
    }

修改為Put請(qǐng)求,前端直接使用/user并使用put請(qǐng)求方式即進(jìn)入當(dāng)前方法中,使用@RequestBody注解接收需要被修改的User對(duì)象數(shù)據(jù),然后執(zhí)行userService.update中的修改接口,因?yàn)樾薷牡臉I(yè)務(wù)基本上都需要有判斷所以這里直接就是返回的服務(wù)層接口,判斷是否通過(guò)以及返回前臺(tái)的數(shù)據(jù)由服務(wù)層處理!

  • 刪除
/**
     * 刪除數(shù)據(jù)
     *
     * @param id 主鍵
     * @return 刪除是否成功
     */
    @DeleteMapping("{id}")
    public JsonWrite deleteById(@PathVariable("id") Integer id) {
        return this.userService.deleteById(id);
    }

刪除請(qǐng)求方式為delete,這里只是簡(jiǎn)單的通過(guò)id刪除數(shù)據(jù),從前臺(tái)傳入一個(gè)id即可,傳入的方式與通過(guò)id獲取是一樣的,/user/3這里的3是指需要被刪除的對(duì)象的id,因?yàn)閯h除也是有很多的業(yè)務(wù)判斷,所以返回的數(shù)據(jù)結(jié)果有service的服務(wù)層處理。

小結(jié)

提示:細(xì)心的同學(xué)可能已經(jīng)發(fā)現(xiàn)了,能夠直接出結(jié)果的都是查詢接口,不能出結(jié)果的都是操作的數(shù)據(jù),針對(duì)數(shù)據(jù)庫(kù)來(lái)說(shuō)就是‘查詢數(shù)據(jù)’和‘操作數(shù)據(jù)’,凡是查詢數(shù)據(jù)的都不應(yīng)該會(huì)有問(wèn)題,所以直接的success,而操作數(shù)據(jù)的都有可能伴隨著業(yè)務(wù)的判斷是失敗所以是在業(yè)務(wù)層中區(qū)處理返回對(duì)象

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8691

    瀏覽量

    151712
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7134

    瀏覽量

    89403
  • 封裝
    +關(guān)注

    關(guān)注

    127

    文章

    7990

    瀏覽量

    143277
  • Restful
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    3552
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    編寫restful

    求助,有沒(méi)有兄弟做過(guò)相關(guān)的項(xiàng)目啊,現(xiàn)在寫了一個(gè)程序作為一個(gè)web service,基于restful。 需要將采集到的數(shù)據(jù)經(jīng)過(guò)wifi傳輸,數(shù)據(jù)傳輸想用到restful。有沒(méi)有推薦的自帶的restful的wifi模塊,或者有沒(méi)有
    發(fā)表于 03-22 18:12

    FPGA實(shí)戰(zhàn)演練邏輯篇39:代碼風(fēng)格與書寫規(guī)范

    代碼風(fēng)格與書寫規(guī)范本文節(jié)選自特權(quán)同學(xué)的圖書《FPGA設(shè)計(jì)實(shí)戰(zhàn)演練(邏輯篇)》配套例程下載鏈接:http://pan.baidu.com/s/1pJ5bCtt 不同的人可能對(duì)代碼風(fēng)格和代碼書寫規(guī)
    發(fā)表于 06-19 10:38

    restful api設(shè)計(jì)規(guī)范

    清晰、符合標(biāo)準(zhǔn)、易于理解以及擴(kuò)展方便等特點(diǎn),受到越來(lái)越多網(wǎng)站的采用!Restful API接口規(guī)范包括以下部分:一、協(xié)議API與用戶的通信協(xié)議,總是使用HTTPs協(xié)議。二、域名應(yīng)該盡量將API部署在
    發(fā)表于 03-26 16:26

    python restful api學(xué)習(xí)技巧精選2

    python restful api 學(xué)習(xí)筆記2 快速開始
    發(fā)表于 09-16 13:39

    一文知道后端接口開發(fā)json,jsonp,restful

    json、jsonp/** * 后臺(tái)接口開發(fā) * json接口 * jsonp接口(解決跨域問(wèn)題) * restful接口 */const
    發(fā)表于 11-04 07:22

    什么是restful以及restfulAPI的設(shè)計(jì)風(fēng)格

    如何理解restful架構(gòu)?什么是restful API ? restful API的設(shè)計(jì)風(fēng)格和序列化?restful API之請(qǐng)求與響應(yīng)
    發(fā)表于 11-04 08:25

    傳輸設(shè)備PDH接口對(duì)接問(wèn)題

    設(shè)備對(duì)接是任何通信工程中非常重要的一個(gè)環(huán)節(jié),設(shè)備對(duì)接的好壞直接影響到通信質(zhì)量。而我們?cè)谠O(shè)備對(duì)接中也經(jīng)常會(huì)遇到PDH接口對(duì)接,下面我們將從設(shè)備
    發(fā)表于 07-26 09:34 ?2771次閱讀

    接接頭系數(shù)及選取

    接接頭系數(shù)是指對(duì)接接接頭強(qiáng)度與母材強(qiáng)度之比值。用以反映由于焊接材料、焊接缺陷和焊接殘余應(yīng)力等因素使焊接接頭強(qiáng)度被削弱的程度,是焊接接頭力
    發(fā)表于 11-30 14:09 ?4666次閱讀
    焊<b class='flag-5'>接接</b>頭系數(shù)及選取

    接接頭形式分類

    接接頭的主要基本形式有四種:對(duì)接接頭、T型接頭、角接接頭和搭接接頭。焊接接頭分類的原則僅根據(jù)焊接接
    發(fā)表于 11-30 14:13 ?9340次閱讀

    Constrained RESTful Environments (CoRE) Link Format

    Constrained RESTful Environments (CoRE) link Format,受限的RESTful環(huán)境鏈路格式
    發(fā)表于 11-26 15:23 ?6次下載

    接接頭形式圖_焊接接頭形式有哪幾種

    接接頭形式:對(duì)接接頭、角接接頭及T字形接頭、搭接接頭。
    發(fā)表于 11-20 10:28 ?4.4w次閱讀
    焊<b class='flag-5'>接接</b>頭形式圖_焊<b class='flag-5'>接接</b>頭形式有哪幾種

    RESTful API設(shè)計(jì)規(guī)范

    REST(REpresentational State Transfer)是 Roy Fielding 博士于 2000 年在他的博士論文中提出來(lái)的一種軟件架構(gòu)風(fēng)格(一組架構(gòu)約束條件和原則)。在該論文的 中文譯本 中翻譯是"表述性狀態(tài)移交"。
    的頭像 發(fā)表于 07-10 09:30 ?1115次閱讀

    構(gòu)建RESTful Web服務(wù)的過(guò)程

    本指南將引導(dǎo)您完成使用 Spring 創(chuàng)建“Hello, World”RESTful Web 服務(wù)的過(guò)程。
    的頭像 發(fā)表于 09-06 15:47 ?728次閱讀

    接接頭系數(shù)選取方法 焊接接頭系數(shù)的確定原則是什么

    接接頭系數(shù)Φ是指對(duì)接接接頭強(qiáng)度與母材強(qiáng)度之比值,用以反映由于焊接缺陷和焊接殘余應(yīng)力等因素使焊接接頭強(qiáng)度被削弱的程度,是焊接接頭力學(xué)性能的
    的頭像 發(fā)表于 08-08 11:49 ?4641次閱讀

    REST的6大指導(dǎo)原則

    systems )架構(gòu)風(fēng)格。由Roy Fielding 提出。 REST API 也稱RESTful API, 其遵循REST架構(gòu)規(guī)范的應(yīng)用編程接口, 支持與
    的頭像 發(fā)表于 10-09 14:27 ?1665次閱讀
    主站蜘蛛池模板: 免费可以看污动画软件 | 四虎永久免费网址 | 我们中文在线观看免费完整版 | 女生扒开尿口 | 久久看片网 | 草莓视频cm.888tw | 成人无码在线超碰视频 | 国产免费午夜高清 | 男女后进式猛烈xx00动态图片 | 欧美狂野乱码一二三四区 | 4hu四虎免费影院www | 啊轻点啊再深点视频免费 | 国产高清在线a视频大全 | 热思思| 又长又大又粗又硬3p免费视频 | 欧美16一17sex性hd | 五月丁香啪啪. | 国产精品久久毛片A片软件爽爽 | 寂寞夜晚视频在线观看 | 日本午夜精品一区二区三区电影 | 国产精品久久久久久52AVAV | 亚洲午夜久久久久中文字幕 | 国产精品无码人妻在线 | 狠狠鲁 我喜欢 | 国产制服丝袜91在线 | 国产福利视频第一导航 | 高h辣h双处全是肉一对一 | 日日噜噜夜夜躁躁狠狠 | 人妻互换免费中文字幕 | 高清bblxx手机在线观看 | 506070老熟肥妇bbwxx视频 4虎最新网址 | 亚洲乱码爆乳精品成人毛片 | 一级毛片直接看 | 97精品少妇偷拍蜜桃AV | 亚洲伊人久久一次 | 国产午夜精品福利久久 | 性做久久久久免费观看 | 在线观看亚洲免费人成网址 | 国产女人91精品嗷嗷嗷嗷 | 久久久大香菇 | 91九色porny蝌蚪 |