<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC=2,4] `think.controller.base`?繼承自?[think.http.base](https://thinkjs.org/zh-CN/doc/2.0/api_think_http_base.html)?類。項目里的控制器需要繼承該類。 ##### 使用 ES6 的語法繼承該類 ~~~ export default class extends think.controller.base { indexAction(){ } } ~~~ ##### 使用普通方式繼承該類 ~~~ module.exports = think.controller({ indexAction(){ } }) ~~~ ### 屬性 #### controller.http 傳遞進來的?[http](https://thinkjs.org/zh-CN/doc/2.0/api_http.html)?對象。 ### 方法 #### controller.ip() * `return`?{String} 獲取當前請求用戶的 ip,等同與 http.ip 方法。 ~~~ export default class extends think.controller.base { indexAction(){ let ip = this.ip(); } } ~~~ #### controller.method() * `return`?{String} 獲取當前請求的類型,轉化為小寫。 ~~~ export default class extends think.controller.base { indexAction(){ let method = this.method(); //get or post ... } } ~~~ #### controller.isMethod(method) * `method`?{String} 類型 * `return`?{Boolean} 判斷當前的請求類型是否是指定的類型。 #### controller.isGet() * `return`?{Boolean} 判斷是否是 GET 請求。 #### controller.isPost() * `return`?{Boolean} 判斷是否是 POST 請求。 #### controller.isAjax(method) * `method`?{String} * `return`?{Boolean} 判斷是否是 Ajax 請求。如果指定了 method,那么請求類型也要相同。 ~~~ export default class extends think.controller.base { indexAction(){ //是ajax 且請求類型是 POST let isAjax = this.isAjax("post"); } } ~~~ #### controller.isWebSocket() * `return`?{Boolean} 是否是 websocket 請求。 #### controller.isCli() * `return`?{Boolean} 是否是命令行下調用。 #### controller.isJsonp(callback) * `callback`?{String} callback 名稱 * `return`?{Boolean} 是否是 jsonp 請求。 #### controller.get(name) * `name`?{String} 參數名 獲取 GET 參數值。 ~~~ export default class extends think.controller.base { indexAction(){ //獲取一個參數值 let value = this.get("xxx"); //獲取所有的參數值 let values = this.get(); } } ~~~ #### controller.post(name) * `name`?{String} 參數名 獲取 POST 提交的參數。 ~~~ export default class extends think.controller.base { indexAction(){ //獲取一個參數值 let value = this.post("xxx"); //獲取所有的 POST 參數值 let values = this.post(); } } ~~~ #### controller.param(name) * `name`?{String} 參數名 獲取參數值,優先從 POST 里獲取,如果取不到再從 GET 里獲取。 #### controller.file(name) * `name`?{String} 上傳文件對應的字段名 獲取上傳的文件,返回值是個對象,包含下面的屬性: ~~~ { fieldName: "file", //表單字段名稱 originalFilename: filename, //原始的文件名 path: filepath, //文件保存的臨時路徑,使用時需要將其移動到項目里的目錄,否則請求結束時會被刪除 size: 1000 //文件大小 } ~~~ 如果文件不存在,那么值為一個空對象?`{}`。 #### controller.header(name, value) * `name`?{String} header 名 * `value`?{String} header 值 獲取或者設置 header。 ~~~ export default class extends think.controller.base { indexAction(){ let accept = this.header("accept"); //獲取 header this.header("X-NAME", "thinks"); //設置 header } } ~~~ #### controller.expires(time) * `time`?{Number} 過期時間,單位為秒 強緩存,設置?`Cache-Control`?和?`Expires`?頭信息。 ~~~ export default class extends think.controller.base { indexAction(){ this.expires(86400); //設置過期時間為 1 天。 } } ~~~ #### controller.userAgent() 獲取 userAgent。 #### controller.referrer(onlyHost) * `referrer`?{Boolean} 是否只需要 host 獲取 referrer。 #### controller.cookie(name, value, options) * `name`?{String} cookie 名 * `value`?{String} cookie 值 * `options`?{Object} 獲取或者設置 cookie。 ~~~ export default class extends think.controller.base { indexAction(){ //獲取 cookie 值 let value = this.cookie("think_name"); } } ~~~ ~~~ export default class extends think.controller.base { indexAction(){ //設置 cookie 值 this.cookie("think_name", value, { timeout: 3600 * 24 * 7 //有效期為一周 }); } } ~~~ #### controller.session(name, value) * `name`?{String} session 名 * `value`?{Mixed} session 值 * `return`?{Promise} 讀取、設置和清除 session。 ##### 讀取 Session ~~~ export default class extends think.controller.base { * indexAction(){ //獲取session let value = yield this.session("userInfo"); } } ~~~ ##### 設置 Session ~~~ export default class extends think.controller.base { * indexAction(){ //設置 session yield this.session("userInfo", data); } } ~~~ ##### 清除 Session ~~~ export default class extends think.controller.base { * indexAction(){ //清除當前用戶的 session yield this.session(); } } ~~~ #### controller.lang(lang, asViewPath) * `lang`?{String} 要設置的語言 * `asViewPath`?{Boolean} 是否在模版目錄添加一層語言目錄 讀取或者設置語言。 #### controller.locale(key) * `key`?{String} 根據 language 獲取對應的語言文本。 #### controller.redirect(url, statusCode) * `url`?{String} 要跳轉的 url * `statusCode`?{Number} 狀態碼,默認為 302 頁面跳轉。 #### controller.assign(name, value) * `name`?{String | Object} 變量名 * `value`?{Mixed} 變量值 將變量賦值到模版中。 ~~~ export default class extends think.controller.base { indexAction(){ //單個賦值 this.assign("title", "thinkjs"); //批量賦值 this.assign({ name: "xxx", desc: "yyy" }) } } ~~~ #### controller.fetch(templateFile) * `templateFile`?{String} 模版文件地址 * `return`?{Promise} 獲取解析后的模版內容。 ##### 直接獲取 ~~~ // 假設文件路徑為 /foo/bar/app/home/controller/index.js export default class extends think.controller.base { * indexAction(){ // home/index_index.html let content = yield this.fetch(); } } ~~~ ##### 改變 action ~~~ // 假設文件路徑為 /foo/bar/app/home/controller/index.js export default class extends think.controller.base { * indexAction(){ // home/index_detail.html let content = yield this.fetch("detail"); } } ~~~ ##### 改變 controller 和 action ~~~ // 假設文件路徑為 /foo/bar/app/home/controller/index.js export default class extends think.controller.base { * indexAction(){ // home/user_detail.html let content = yield this.fetch("user/detail"); } } ~~~ ##### 改變 module, controller 和 action ~~~ // 假設文件路徑為 /foo/bar/app/home/controller/index.js export default class extends think.controller.base { * indexAction(){ // admin/user_detail.html let content = yield this.fetch("admin/user/detail"); } } ~~~ ##### 改變文件后綴名 ~~~ // 假設文件路徑為 /foo/bar/app/home/controller/index.js export default class extends think.controller.base { * indexAction(){ // home/index_detail.xml let content = yield this.fetch("detail.xml"); } } ~~~ ##### 獲取絕對路徑文件 ~~~ // 假設文件路徑為 /foo/bar/app/home/controller/index.js export default class extends think.controller.base { * indexAction(){ // /home/xxx/aaa/bbb/c.html let content = yield this.fetch("/home/xxx/aaa/bbb/c.html"); } } ~~~ #### controller.display(templateFile) * `templateFile`?{String} 模版文件路徑 輸出模版內容到瀏覽器端。查找模版文件策略和`controller.fetch`相同。 #### controller.jsonp(data) * `data`?{Mixed} 要輸出的內容 jsonp 的方法輸出內容,獲取 callback 名稱安全過濾后輸出。 ~~~ export default class extends think.controller.base { indexAction(){ this.jsonp({name: "thinkjs"}); //writes "callback_fn_name({name: "thinkjs"})" } } ~~~ #### controller.json(data) * `data`?{Mixed} 要輸出的內容 json 的方式輸出內容。 #### controller.status(status) * `status`?{Number} 狀態碼,默認為 404 設置狀態碼。 #### controller.deny(status) * `status`?{String} 狀態碼,默認為 403 拒絕當前請求。 #### controller.write(data, encoding) * `data`?{mixed} 要輸出的內容 * `encoding`?{String} 編碼 輸出內容 #### controller.end(data, encoding) * `data`?{mixed} 要輸出的內容 * `encoding`?{String} 編碼 輸出內容后結束當前請求。 #### controller.type(type, charset) * `type`?{String} Content-Type * `charset`?{Boolean} 是否自動追加 charset 設置 Content-Type。 #### controller.download(filePath, contentType, fileName) * `filePath`?{String} 下載文件的具體路徑 * `content-Type`?{String} Content-Type * `fileName`?{String} 報錯的文件名 下載文件。 ~~~ export default class extends think.controller.base { indexAction(){ let filePath = think.RESOUCE_PATH + "/a.txt"; //自動識別 Content-Type,保存的文件名為 a.txt this.download(filePath); } } ~~~ ~~~ export default class extends think.controller.base { indexAction(){ let filePath = think.RESOUCE_PATH + "/a.log"; //自動識別 Content-Type,保存的文件名為 b.txt this.download(filePath, "b.txt"); } } ~~~ ~~~ export default class extends think.controller.base { indexAction(){ let filePath = think.RESOUCE_PATH + "/a.log"; //指定 Content-Type 為 text/html,保存的文件名為 b.txt this.download(filePath, "text/html", "b.txt"); } } ~~~ #### controller.success(data, message) * `data`?{Mixed} 要輸出的數據 * `message`?{String} 追加的message 格式化輸出一個正常的數據,一般是操作成功后輸出。 ~~~ http.success({name: "thinkjs"}); //writes { errno: 0, errmsg: "", data: { name: "thinkjs" } } ~~~ 這樣客戶端就可以根據`errno`是否為`0`為判斷當前請求是否正常。 #### controller.fail(errno, errmsg, data) * `errno`?{Number} 錯誤號 * `errmsg`?{String} 錯誤信息 * `data`?{Mixed} 額外的數據 格式化輸出一個異常的數據,一般是操作失敗后輸出。 `注`:字段名`errno`和`errmsg`可以在配置里進行修改。 ~~~ http.fail(100, "fail") //writes { errno: 100, errmsg: "fail", data: "" } ~~~ 這樣客戶端就可以拿到具體的錯誤號和錯誤信息,然后根據需要顯示了。 `注`:字段名`errno`和`errmsg`可以在配置里進行修改。 #### controller.sendTime(name) * `name`?{String} header key 發送請求的執行時間,使用 header 的方式發出。 文檔地址:[https://github.com/75team/www.thinkjs.org/tree/master/view/zh-CN/doc/2.0/api_controller.md](https://github.com/75team/www.thinkjs.org/tree/master/view/zh-CN/doc/2.0/api_controller.md)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看