日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ABAP应用服务器的HTTP响应状态码(Status Code)

發布時間:2023/12/19 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ABAP应用服务器的HTTP响应状态码(Status Code) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近Jerry參與了SAP Commerce Cloud的標準開發,我們調用微軟云平臺Azure上創建Lambda Function的Restful API來創建Lambda Function:

在開發過程中發現該API工作不太穩定,同樣的輸入,時不時會返回HTTP 400 Bad Request:Encountered an error (InternalServerError) from host runtime

這個錯誤并不是總能重現。

通過排查,最后我們確認這個問題和我們調用API的代碼無關,于是給Azure報了一個bug:

在分析定位問題時,不由得讓我懷念起以前在ABAP On-Premise上做開發的一個便利之處——大多數問題都可以通過在ABAP應用服務器端調試來找到根源。

本文記錄了2016年時,SAP成都研究院CRM開發團隊在開發SAP CRM Fiori應用時的一些技術討論,關于HTTP請求的響應狀態碼的差異。

當時我們用Chrome打開SAP Fiori應用,在Chrome開發者工具的network標簽里,觀察到有的請求響應碼為HTTP 200,有的卻是HTTP 304.

HTTP 200和HTTP 304理論上的差異解析,網上一搜一大把:

https://stackoverflow.com/questions/1665082/what-is-the-difference-between-http-status-code-200-cache-vs-status-code-304

本文我們從一個實際的例子出發,觀察ABAP服務器分別是在何種情況下,返回HTTP 200和304這兩個狀態碼的,幫助大家加深理解。

分幾種情況進行討論。

  • 第一種情況:HTTP 200 OK
  • 第二種情況:HTTP 304 Not Modified
  • 第三種情況:HTTP 200(from Cache)

首先進行第一輪測試。

將這種來自SAP UI5標準庫文件的url粘貼到瀏覽器里訪問:

https://:7080/sap/bc/ui5_ui5/ui2/ushell/resources/20160308134900/sap/fiori/core-min-0.js

得到HTTP 200狀態碼:

大家想過沒有,上圖高亮的HTTP響應頭部字段,比如last-modified, 是在ABAP服務器上哪段代碼里被填充的?

靈活運用Jerry 文章 SAP錯誤消息調試之七種武器:讓所有的錯誤消息都能被定位 介紹的辦法,順利通過調試的方式,找到準確的位置如下:

上述代碼的邏輯:

(1) 第九行,服務器試圖從HTTP請求的頭部字段中,提取名為If-Modified-Since的字段值,因為這是我第一次請求該JavaScript文件,而這個字段的值邏輯上應該等于第一次請求到達服務器后,從服務器返回的響應結構里名為last-modified字段的值。

在我的第一輪測試里,因為是第一次請求該文件,HTTP請求頭部沒有包含If-Modified-Since字段,所以服務器解析出的值為空,即變量lv_modified_since為空。

(2) 在我使用的ABAP服務器上,JavaScript文件core-min-0.js最后修改的時間戳為20160316205045. 因此,兩個變量lv_change_time_char和lv_change_time_string都被附上了這個值。

下面第20行代碼展示了前文HTTP 200狀態碼的截圖里,HTTP響應字段cache-control被填充的地方。

第二種情況:HTTP 304 Not Modified

之前Chrome瀏覽器里打開的url:

https://:7080/sap/bc/ui5_ui5/ui2/ushell/resources/20160308134900/sap/fiori/core-min-0.js

不用關閉這個瀏覽器窗口,直接按F5刷新,這次收到的響應碼不再是HTTP 200 OK,而是HTTP 304 Not Modified.

為什么會產生這種差異呢?按F5之后仔細觀察請求頭部,發現第二次請求,瀏覽器發出的HTTP請求里,If-Modified-Since字段包含的就是第一個請求里從服務器端返回的last-modified字段值。

按F5刷新的這個請求到了服務器端,這一次ABAP服務器成功解析出請求字段If-Modified-Since的值:

將客戶端發送過來的這個If-Modified-Since時間戳,同服務器端該文件最后修改的時間戳進行比較(即下圖第26行AND后的第二個判斷條件),發現二者相等,因此在第28行返回HTTP 304 Not Modified.

第三種情況:HTTP 200(from Cache)

關掉Chrome,再打開,再訪問同一url,此時Chrome直接從自身的cache里返回該JavaScript文件,而不是向ABAP服務器上發起請求。因此服務器上所有ABAP斷點均不會觸發。

再回到Jerry遇到的那個Azure上執行function創建API遇到的HTTP 400 Bad request的incident,至本文發稿時為止還是未能得到解決。

盡管Azure的Function Host運行時也是開源的,但不能調試,我拿著這些海量代碼也沒轍,目前Github上看到的就有多達967個開著的issue.

從開發者遇到問題后調試定位這個角度上說,還是ABAP On-Premises方便啊。

感謝閱讀。

要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":

ABAP專題

  • Jerry的ABAP, Java和JavaScript亂燉

  • ABAP開發人員未來應該學些什么

  • Jerry 2017年的五一小長假:8種經典排序算法的ABAP實現

  • Jerry的ABAP原創技術文章合集

  • 300行ABAP代碼實現一個最簡單的區塊鏈原型

  • 使用Java+SAP云平臺+SAP Cloud Connector調用ABAP On-Premise系統里的函數

  • 在SAP云平臺的CloudFoundry環境下消費ABAP On-Premise OData服務

  • ABAP vs Java, 蛙泳 vs 自由泳

  • 聊聊C語言和ABAP

  • 動手使用ABAP Channel開發一些小工具,提升日常工作效率

  • 我用ABAP做過的那些無聊的事情

  • 不喜歡SAP GUI?那試試用Eclipse進行ABAP開發吧

  • 使用Visual Studio Code編寫和激活ABAP代碼

  • 你的ABAP程序給佛祖開過光么?來試試Jerry這個小技巧

  • 在SAP云平臺ABAP編程環境上編寫第一段ABAP程序

  • SAP官方發布的ABAP編程規范

  • ABAP Code Inspector那些隱藏的功能,您都知道嗎?

  • 還在用ABAP進行SAP產品的二次開發?來了解下這種全新的二次開發理念吧

  • ABAP Netweaver體內的那些寄生式編程語言

  • 從SAP社區上的一篇博客開始,聊聊SAP產品命名背后的那份情懷

  • 云端的ABAP Restful服務開發

  • 如何在SAP云平臺ABAP編程環境里把CDS view暴露成OData服務

  • 使用abapGit在ABAP On-Premises系統和SAP云平臺ABAP環境之間進行代碼傳輸

  • 30分鐘用Restful ABAP Programming模型開發一個支持增刪改查的Fiori應用

  • Jerry帶您了解Restful ABAP Programming模型系列之二:Action和Validation的實現

  • Jerry帶您了解Restful ABAP Programming模型系列之三:云端ABAP應用調試

  • SAP云平臺上的ABAP編程環境里如何消費第三方服務

  • ABAP開發者上云的時候到了 - 現在大家可以免費使用SAP云平臺ABAP環境的試用版了

  • 學而不思則罔 - SAP云平臺ABAP編程環境的由來和適用場景

  • SAP云平臺里的三叉戟應用

  • 如何基于Restful ABAP Programming模型開發并部署一個支持增刪改查的Fiori應用

  • SAP 2019 TechEd Key Note解讀:云時代下SAP從業人員如何做二次開發?

  • 有哪些ABAP關鍵字和語法,到了ABAP云環境上就沒辦法用了?

  • ABAP開發環境終于支持以駝峰命名法自動格式化ABAP變量名了

  • 利用ABAP 740的新關鍵字REDUCE完成一個實際工作任務

  • 一段讓人瑟瑟發抖的ABAP代碼

  • 昨日萬圣節ABAP怪獸級代碼謎團,公布答案啦

  • 介紹一種在ABAP內核態進行內表高效拷貝的方法

  • 使用SAP Cloud Application Programming模型開發OData的一個實際例子

  • 當ABAP遇見普羅米修斯

  • 使用ABAP繪制可伸縮矢量圖

  • ABAP開發環境語法高亮的那些事兒

  • SAP錯誤消息調試之七種武器:讓所有的錯誤消息都能被定位

  • 使用ABAP操作Excel的幾種方法

  • SAP GUI里的收藏夾事務碼管理工具

  • SAP GUI和Windows注冊表

  • 有了Debug權限就能干壞事?小心了,你的一舉一動盡在系統監控中

  • ABAP CCDEF, CCIMP, CCMAC, CCAU, CMXXX這些東東是什么鬼

  • 實現ABAP條件斷點的三種方式

  • 使用SAT跟蹤監控從瀏覽器打開的SAP應用的性能和調用棧

  • 一個13年ABAP老兵的建議:了解這些基礎知識,對ABAP開發有百利而無一害

  • SAP ABAP Netweaver容器化, 不可能完成的任務嗎?

  • SAP產品增強技術回顧

  • SAP API開發方法大全

  • 淺談Java和SAP ABAP的靜態代理和動態代理,以及ABAP面向切面編程的嘗試

總結

以上是生活随笔為你收集整理的ABAP应用服务器的HTTP响应状态码(Status Code)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。