當前位置:首頁 » 編程語言 » axiosphp

axiosphp

發布時間: 2025-04-27 23:41:37

① query string、formData和request payload的區別,你真的知道嗎

在前後端分離項目開發中,前後端數據傳遞的格式差異可能導致問題。前端向後端傳輸數據正確,但後端接收不到數據。原因在於數據格式不匹配,即前端使用的請求方式與後端接收數據的方式不一致。

當請求方式為 GET,前端通過 URL 的「問號傳參」格式,即 query string Parameters,傳遞數據。例如,請求地址為 newsList.php,參數為 pageIndex 和 pageCount,則格式為 newsList.php?pageIndex=1&pageCount=10。在 Chrome 瀏覽器的 network 視圖中,可以觀察到 query string Parameters 的請求格式。

對於非 GET 請求,數據不在 URL 上,而位於請求體中。請求體分為 formData 和 request payload 格式,根據 content-type 的值來區分。

當 content-type 為 "application/x-www-form-urlencoded" 或 "multipart/form-data",使用 formData 格式傳遞數據。反之,當 content-type 為 "text/plain" 或 "application/json",使用 request payload 格式傳遞數據。

默認數據格式遵循以下規則:傳統 ajax 請求時,Content-Type 默認為文本類型;傳統 form 提交時,Content-Type 默認為 Form 類型(application/x-www-form-urlencoded);axios 傳遞字元串時,Content-Type 默認為 Form 類型;axios 傳遞對象時,Content-Type 默認為 JSON 類型。

了解這些格式及默認設置,有助於避免數據傳遞中的錯誤,確保前後端數據的正確傳輸。

② php項目怎麼部署到伺服器(php項目怎麼部署到伺服器中)

使用php開發的項目必須部署在才能正常運行

使用PHP開發的項目必須部署在Web伺服器上才能正常運行。PHP是一種伺服器端腳本語言,用於開發動態網站和Web應用程序。PHP腳本必須在Web伺服器上運行,才能被解釋和執行。因此,使用PHP開發的項目必須部署在Web伺服器上才能正常運行。在部署PHP項目時,需要將PHP腳本文件和相關的資源文件上傳到Web伺服器上,並配置好Web伺服器的環境和參數,以確保PHP腳本能夠被正確解釋和執行。常用的Web伺服器包括Apache、Nginx等,可以根據具體需求選擇合適的Web伺服器進行部署。需要注意的是,部署PHP項目時需要考慮安全性和性能等因素,以確保項目的穩定性和可靠性。

php項目如何部署??

首先是要對數據結構進行規劃,然後根據項目大小決定是否用php框架或模板技術,之後就是後台功能開發,最後再把數據在前台展示出來;這只是基本步驟,真正實施起來,涉及的東西是很多的,要注意的細節也很多

Thinkphp5項目在nginx伺服器部署

1,切換到nginx的配置目錄,找到nginx.conf文件

????cd?/usr/local/nginx/conf

??vim?nginx.conf

2,如果是單項目部署的話,只需要在nginx.conf文件裡面加上以下

server{

????????listen80;

????????#域名,本地測試可以使用127.0.0.1或localhost

????????server_name;

????????#php項目根目錄

????????root/home/data-www/blog;

????????location/{

????????????????#定義首頁索引文件的名稱

????????????????indexindex.phpindex.htmlindex.htm;

???????????????#影藏入口文件

???????????????if(-f$request_filename/index.html){

????????????????????????????rewrite(.*)$1/index.htmlbreak;

????????????????}

????????????????if(-f$request_filename/index.php){

????????????????????????????rewrite(.*)$1/index.php;

????????????????}

????????????????if(!-f$request_filename){

????????????????????????????rewrite(.*)/index.php;

????????????????}

????????????????try_files$uri$uri//index.php?$query_string;

????????}

????????#PHP腳本請求全部轉發到FastCGI處理.使用FastCGI協議默認配置.

????????#Fastcgi伺服器和程序(PHP)溝通的協議

????????.location~.*.php${

????????????????#設置監聽埠

????????????????fastcgi_pass127.0.0.1:9000;

????????????????#設置nginx的默認首頁文件

????????????????fastcgi_indexindex.php;

????????????????#設置腳本文件請求的路徑

????????????????fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;

????????????????#引入fastcgi的配置文件

????????????????includefastcgi_params;

???????????????fastcgi_split_path_info^(.+?.php)(/.*)$;

????????????????set$path_info$fastcgi_path_info;

????????????????fastcgi_paramPATH_INFO$path_info;

????????????????try_files$fastcgi_script_name=404;

????????}

}

3,如果多項目部署,就需要配置vhost

第一步:編輯nginx.conf文件,在最後加上???include??vhost/*.conf;

第二步:進入vhost文件夾,創建??域名.conf??文件,如創建一個:quanma.meyat.com.conf

第三步:編輯quanma.meyat.com.conf文件,內容如下:

????????server

????????{

????????????????listen80;

????????????????server_namequanma.meyat.com;

????????indexindex.htmlindex.htmindex.phpdefault.htmldefault.htmdefault.php;

????????????????root/data/wwwroot/default/quanma/public/;

????????????????#error_page404/404.html;

????????????????location/{

????????????????????????indexindex.htmlindex.php;

????????????????????????if(-f$request_filename/index.html){

????????????????????????????????rewrite(.*)$1/index.htmlbreak;

????????????????????????}

????????????????????????if(-f$request_filename/index.php){

????????????????????????????????rewrite(.*)$1/index.php;

????????????????????????}

????????????????????????if(!-f$request_filename){

????????????????????????????????rewrite(.*)/index.php;

????????????????????????}

????????????????????????try_files$uri$uri//index.php?$query_string;

????????????????}

????????????????location~[^/].php(/|$)

????????????????{

????????????????????????#commenttry_files$uri=404;toenablepathinfo

????????????????????????#try_files$uri=404;

????????????????????????fastcgi_pass127.0.0.1:9000;

????????????????????????fastcgi_indexindex.php;

????????????????????????includefastcgi_params;

????????????????????????fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;

????????????????????????fastcgi_split_path_info^(.+?.php)(/.*)$;

????????????????????????set$path_info$fastcgi_path_info;

????????????????????????fastcgi_paramPATH_INFO$path_info;

????????????????????????try_files$fastcgi_script_name=404;

????????????????????????#includefastcgi.conf;

????????????????????????#includepathinfo.conf;

????????????}

????????????location~.*.(gif|jpg|jpeg|png|bmp|swf)$

????????????{

????????????????????expires30d;

????????????}

????????????location~.*.(js|css)?$

????????????{

????????????????????expires12h;

????????????}

????????????#Disallowaccessto.ht,.svn,.bzr,.git,.hg,.cvsdirectories

????????????location~/.(ht|svn|bzr|git|hg|cvs){

????????????????????denyall;

????????????}

????????????#access_log/date/nginx/bmp.com.conf/access.logmain;

}

伺服器上怎麼安裝php程序

你好,如果你的伺服器是Windows系統,那麼你需要遠程到你的伺服器,進行啟動IIS(asp環境),如果你需要php環境,你可以從xp.cn(小皮)或者bt.cn(寶塔)安裝面板

如果你的伺服器是linux,建議使用寶塔

打開終端,不同Linux系統的輸入指令不同:

Centos安裝腳本

終端輸入:yuminstall-ywgetwget-Oinstall.shshinstall.sh

Ubuntu/Deepin安裝腳本

終端輸入:wget-Oinstall.shsudobashinstall.sh

Debian安裝腳本

終端輸入:wget-Oinstall.shbashinstall.sh

Fedora安裝腳本

終端輸入wget-Oinstall.shbashinstall.sh

輸入後進行安裝就可以了

php項目如何部署在伺服器上

一、阿里ECS伺服器配置

???1.因為線上已經有幾個站點了.所以要配置ngnix多站點

???2.阿里雲ecs目錄結構,ngxin在/etc/nginx/目錄下,配置的地方主要是nginx.config文件。或者在conf.d新建一個配置文件然後在include到nginx.config文件中

?????

???3.nginx.config新建站點信息

server{

listen???80;

server_name?www.你的域名.com;

root????站點的相對路徑;

indexindex.phpindex.htmlindex.htm;

#charsetkoi8-r;

#access_log?/var/log/nginx/host.access.log?main;

#.

include/etc/nginx/default.d/*.conf;

location/{

#try_files$uri$uri//index.php;

root?/opt/www/pcweb/ytyy_pc;

index?index.phpindex.htmlindex.htm;???????if(!-e$request_filename){?rewrite?^(.*)$/index.php?s=$1?last;?break;??}}??????url重寫(可以沒有)

#/40x.html

#

error_page?404???????/404.html;?40錯誤頁面配置

location=/40x.html{

}

#/50x.html

#

error_page?500502503504?/50x.html;?50錯誤頁面配置

location=/50x.html{

}

location~.php${

root?????站點相對路徑;

fastcgi_pass?127.0.0.1:9000;

fastcgi_index?index.php;

fastcgi_param?SCRIPT_FILENAME?$document_root$fastcgi_script_name;

include????fastcgi_params;

}

location~/.ht{

deny?all;

}

}

配置文件的基本內容如上;

配置完成後測試配置文件是否正確

這樣配置就可以使用了

然後重啟nginx伺服器?

這樣nginx配置就結束了可以使用了。吧站點文件放到對應的目錄下面。我直接gitclone過去的。

二.thinkphp項目文件轉移

本來以為上傳完就結束了。上傳上去碰到的第一個問題就是訪問頁面報錯,頁面被電信的114頁面劫持了。。。麻蛋看不到報錯

萬能網路大法

解決方法1.internet高級選項-隱私-站點??新加阻止站點

解決方法2:控制面板-網路和internet-本地連接-屬性-ipv4?使用如下ip

終於搞定可以看到報錯頁面了。。。。。。麻蛋。再次開啟萬能網路大法

?

?

?得到最終結論是文件目錄許可權引起的。thinkphp的runtime目錄沒有寫入許可權。。thinkphp文件上傳到阿里的好像都有這個問題。解決問題很簡單

進入到項目文件目錄

直接跟文件最高許可權

chmod-R777[目錄]?//linux修改文件許可權

?

前端vue與後端Thinkphp在伺服器的部署

vue在服務端部署時,我們都知道通過npmrunbuild指令打包好的dist文件,通過http指定是可以直接瀏覽的,Thinkphp通過域名指向index.php文件才可以瀏覽。要使前端正常調用後端數據,有兩種方法:1、前端跨域調用後端數據,2、前端打包文件部署在後端的伺服器文件夾下(同域)。

web伺服器:apache

一、跨域

在伺服器配置站點:

在路徑/home/www/??下創建test項目文件夾,用來放項目文件。??

找到httpd-vhosts.conf文件配置站點??

前端站點:??

????ServerName?test.test.com??

????DocumentRoot?"/home/www/test/dist"????

????DirectoryIndex?index.html??

後端站點:??

????ServerName?test.testphp.com??

????DocumentRoot?"/home/www/test/php"????

????DirectoryIndex?index.php??

將前端打包好的dist文件放在/home/www/test/文件夾下,運行可瀏覽,當路徑改變時,刷新會出現404錯誤。此時dist文件下創建一個.htaccess文件,當路徑不存在時,路徑指向能解決此問題。

??RewriteEngine?On??

??RewriteBase?/??

??RewriteRule?^index.html$?-?[L]??

??RewriteCond?%{REQUEST_FILENAME}?!-f??

??RewriteCond?%{REQUEST_FILENAME}?!-d??

??RewriteRule?.?/index.html?[L]??

在/home/www/test文件夾下創建項目根目錄php文件夾,將thinkphp文件放在php下。TP5的入口文件在public文件下,在這將public下的入口文件index.php挪到php文件夾下(個人習慣將入口文件放在項目根目錄),後端綁定Index模塊。

前端調用後端介面,存在跨域,跨域解決方法有好幾種,在這我將在後端php做配置,解決跨域問題,在公用控制器設置跨域配置:

class?Common?extends?Controller??

{??

????public?$param;??

????//?設置跨域訪問??

????public?function?_initialize()??

????{??

????????parent::_initialize();??

????????isset($_SERVER['HTTP_ORIGIN'])???header('Access-Control-Allow-Origin:?'.$_SERVER['HTTP_ORIGIN'])?:?''??

????????header('Access-Control-Allow-Credentials:?true');??

????????header('Access-Control-Allow-Methods:?GET,?POST,?PUT,?DELETE,?OPTIONS');??

????????header("Access-Control-Allow-Headers:?Origin,?X-Requested-With,?Content-Type,?Accept,?authKey,?sessionId");??

$param?=??Request::instance()-param();??

$this-param?=?$param;??

????}??

}??

前端調用登錄介面:this.axios.post('',{user:'',password:''})。

(可在webpack.base.conf.js文件下可定義介面:)

二、同域

後端配置同上,公共配置器中的header配置注釋。將前端的dist文件下的所有文件(包含.htaccess),放在php文件夾下。將後端index控制器的index方法的路徑重定向php下的index.html文件:

namespace?appindexcontroller;??

use?thinkController;??

class?Index?extends?Controller??

{??

????public?function?index()?{??

$this-redirect('/index.html');??

????}??

}??

前端調用登錄介面:this.axios.post('/index.php/base/login',{user:'',password:''})

轉自:

③ axios+post方法提交formdata步驟詳解

這次給大家帶來axios+post方法提交formdata步驟詳解,axios+post方法提交formdata的注意事項有哪些,下面就是實戰案例,一起來看一下。
vue框架推薦使用axios來發送ajax請求,之前我還寫過一篇博客來講解如何在vue組件中使用axios。但之前做著玩用的都是get請求,現在我自己搭博客時使用了post方法,結果發現後台(node.js)完全拿不到前台傳來的參數。後來進過一番探索,終於發現問題所在。
post提交數據的四種編碼方式
1.application/x-www-form-urlencoded
這應該是最常見的post編碼方式,一般的表單提交默認以此方式提交。大部分伺服器語言對這種方式都有很好的支持。在PHP中,可以用$_POST[「key」]的方式獲取到key的值,在node中我們可以使用querystring中間件對參數進行分離
app.post("/server"function(req,res){ req.on("data"function(data){ let key=querystring.parse(decodeURIComponent(data)).key; console.log("querystring:"+key) });});
2.multipart/form-data
這也是一種比較常見的post數據格式,我們用表單上傳文件時,必須使form表單的enctype屬性或者ajax的contentType參數等於multipart/form-data。使用這種編碼格式時發送到後台的數據長得像這樣子
不同欄位以--boundary開始,接著是內容描述信息,最後是欄位具體內容。如果傳輸的是文件,還要包含文件名和文件類型信息
3.application/json
axios默認提交就是使用這種格式。如果使用這種編碼方式,那麼傳遞到後台的將是序列化後的json字元串。我們可以將application/json與application/x-www-form-urlencoded發送的數據進行比較
首先是application/json:
接著是application/x-www-form-urlencoded:
這里可以明顯看出application/x-www-form-urlencoded上傳到後台的數據是以key-value形式進行組織的,而application/json則直接是個json字元串。如果在處理application/json時後台還是採用對付application/x-www-form-urlencoded的方式將會產生問題。
例如後台node.js依然採用之前對付application/x-www-form-urlencoded的方法,那麼querystring.parse(decodeURIComponent(data))之後得到的數據是這樣子的
這個時候再querystring.parse(decodeURIComponent(data)).key只能獲取到undefined
4.text/xml
剩下的一種編碼格式是text/xml,這種格式我沒有怎麼使用過
解決方法
既然我們知道axios post方法默認使用application/json格式編碼數據,那麼解決方案就有兩種,一是後台改變接收參數的方法,另一種則是將axios post方法的編碼格式修改為application/x-www-form-urlencoded,這樣就不需要後台做什麼修改了。
先來看第一種解決方法
vue組件中,axios發送post請求的代碼如下
this.$axios({ method:"post" url:"/api/haveUser" data:{ name:this.name, password:this.password }}).then((res)=>{ console.log(res.data);})
此時控制台Network Headers裡面的信息是這樣子的
後台接收數據需要依賴body-parser中間件,我們事先裝好,接著在後台代碼中引用body-parser
這張截圖中,發揮作用的代碼僅僅是const bodyParser=require("body-parser");
接下來在路由中使用body-parser
app.post("/api/haveUser"bodyParser.json(),function(req,res){ console.log(req.body); let haveUser=require("/api/server/user.js"); haveUser(req.body.name,req.body.password,res);});
這時,當前台發送post請求之後,後台控制台中就會列印出req.body
這時,通過req.body.name或者req.body.password就能拿到對應的值。
這種方法比較簡單,也不需要前台做過多修改,推薦使用這種方法。
第二種解決方法,具體操作如下
前端
this.$axios({ method:"post" url:"/api/haveUser" headers:{ 'Content-type' 'application/x-www-form-urlencoded' }, data:{ name:this.name, password:this.password }, transformRequest: [function (data) { let ret = '' for (let it in data) { ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&' } return ret }],}).then((res)=>{ console.log(res.data);})
其中發揮關鍵作用的是headers與transformRequest。其中 headers 是設置即將被發送的自定義請求頭。 transformRequest 允許在向伺服器發送前,修改請求數據。這樣操作之後,後台querystring.parse(decodeURIComponent(data))獲取到的就是類似於{ name: 'w' password: 'w' }的對象。
後台代碼如下
app.post("/api/haveUser"function(req,res){ let haveUser=require("/api/server/user.js"); req.on("data"function(data){ let name=querystring.parse(decodeURIComponent(data)).name; let password=querystring.parse(decodeURIComponent(data)).password; console.log(name,password) haveUser(name,password,res); });});
這種方法明顯就要比第一種麻煩一點,但不需要後台做過多處理。所以具體操作還是得根據實際情況決定。

熱點內容
PHP幸運28源碼 發布:2025-04-28 07:34:18 瀏覽:281
人機編程軟體 發布:2025-04-28 07:28:40 瀏覽:729
編譯原理清華大學第二版書 發布:2025-04-28 07:28:05 瀏覽:421
構成c語言的基本單位 發布:2025-04-28 07:25:52 瀏覽:799
讀懂編譯器需要知識 發布:2025-04-28 07:25:11 瀏覽:671
照片壓縮處理 發布:2025-04-28 07:21:35 瀏覽:832
期刊文獻的資料庫 發布:2025-04-28 07:19:18 瀏覽:521
圖庫加密 發布:2025-04-28 07:17:07 瀏覽:443
購買icloud存儲空間 發布:2025-04-28 07:17:01 瀏覽:220
如何解決人員配置不夠 發布:2025-04-28 07:15:42 瀏覽:490