主頁 > 企業開發 > 或許是 WebGIS 下一代的資料規范 - OGC API 系列

或許是 WebGIS 下一代的資料規范 - OGC API 系列

2022-07-20 08:10:29 企業開發

目錄
  • 1. 前言
    • 1.1. 經典的 OGC 標準回顧
    • 1.2. 共同特點與時代變化
    • 1.3. 免責宣告
  • 2. 什么是 OGC API
    • 2.1. OGC API 是一個開放、動態的規范族
    • 2.2. OGC API 特點
    • 2.3. 眾 API 簡述(2022年7月)
  • 3. 能用 OGC API 了嗎
    • 3.1. 各 API 實作情況(官方統計)
    • 3.2. 前端地圖庫的實作
      • ① ArcGIS API for JavaScript
      • ② OpenLayers6
      • ③ LeafletJS
    • 3.3. GeoServer 的實作
    • 3.4. 開發庫的支持
  • 4. 試用 GeoServer 的 OGC API
    • 4.1. 已知 BUG
    • 4.2. 試用 OGC Maps API
    • 4.3. 試用 OGC Tiles API
    • 4.4. 試用 OGC Features API
    • 4.5. 試用 OGC Styles API
  • 5. 小結


1. 前言

1.1. 經典的 OGC 標準回顧

直至今日,GeoServer 仍在發揮作用,WebGIS 的幾大服務標準仍在應用:

  • WMS,網路地圖服務
  • WMTS,網路瓦片地圖服務
  • WFS,網路要素服務

這三個應該是耳熟能詳的了,還有其它的就不列舉了,本篇的重點并不是介紹這些現行標準,上面三個標準的速查可參考我往期的文章,

1.2. 共同特點與時代變化

現有標準,有一些共同的特點,比如,請求行為較為依賴 XML —— 原因之于“大前端”還未盛行的年代,后端常用 XML,前端就只能用瀏覽器 API 決議返還的 XML,譬如,WFS 的修改要素的事務操作(Transaction,一般稱之為 WFS-T),那寫在請求體中的 XML 使用 JavaScript 來撰寫,就顯得比較枯燥冗長,

而現在,前后端職能分離,前端發展也有目共睹,地圖開發中,前端大多數時候更希望發送、得到的是 JS 引擎更容易決議的 JSON,而不是 XML,

今天要介紹的這一套 OGC API,是 OGC 組織在 2 年前就一直在努力、下功夫的,他們把原來的 OGC 官網域名改了,LOGO 換了,甚至為這套 API 開辟了一個新的網站,

1.3. 免責宣告

本文書寫于 2022 年 7 月,這套 API 仍未完全落地,本文僅作為引導作用,并不能作為指導作用,一切以讀者所在時間點的情況為準,我介紹這套 API 僅僅是為了這個風氣浮躁的行業帶來點訊息,畢竟 OGC 官網這么大動作,國內竟然找不到一篇文章,哪怕是簡單介紹的都好啊,

本文僅保留著作權、解釋權,歡迎具名轉載,

2. 什么是 OGC API

2.1. OGC API 是一個開放、動態的規范族

OGC API 目前有 13 個子類(含一個公共定義),而在去年的時候只有 9 個,只要符合 OGC API 公共定義,就可以為行業中新生的資料需求制定網路請求介面規范,

本文介紹的 API 未來有可能會消失其中某幾個,也有可能會新增,一切以你看到的正式發布的版本為準,

2.2. OGC API 特點

最顯著的特點可歸納為:

  • 介面風格是 REST

  • 資料傳遞默認為 JSON 格式

2.3. 眾 API 簡述(2022年7月)

首先,給個官網:OGC API

OGC API 是迎著近十年來前端技術飛速發展的趨勢應運而生的,它與上述幾個舊標準最大的區別是:

  • 使用 REST 風格
  • 交換資料默認改用 JSON

這一系列的 API 標準還對原來的幾大服務標準進行了升級改造,以及對其它領域的需求進行了補充,

例如,WFS 3.0 標準被直接改作 OGC Feature APIWMS 則升級為 OGC Map API,見下表:

新版 API 現行 OGC Web 服務標準 狀態
OGC Features API WFS 已發布 Part 1/2,一共 4 Part
OGC Maps API WMS 起草中,可預覽
OGC Tiles API WMTS 起草中,可預覽
OGC Processes API WPS 已發布 1.0,一共 1 Part
OGC Coverages API WCS 起草中,可預覽

可能有的朋友不太熟悉后面兩個,Processes API 即任務 API,最大的特點就是允許你向介面發起一個資料處理任務,舊標準是 WPS,發布這個 API 是對介面層面做了統一;Coverages API(也即 WCS)可能面向的是遙感應用,這個 API 更感興趣的是柵格資料的波段資訊、柵格像元等資料,

除了升級改造,還補充、完善了其它的標準:

新增的 API 用途 狀態
OGC Common API OGC API 的公共定義 Part 1/2 起草中,可預覽
OGC EDR API 環境資料,與 Features API 很相似 已發布 1.0,一共 1 Part
OGC Records API 查詢資料的資料,即元資料,一般與 Features API 一起搭配用 Part 1 起草中,可預覽
OGC Styles API 可用于需要渲染的資料的樣式介面 Part 1 起草中,可預覽
OGC DGGS API 訪問格網資料的一種介面 起草中,可預覽
OGC Routes API 路由資料介面,最直接的應用即網路分析 Part 1 起草中,可預覽
OGC Joins API 提供為空間資料進行連接操作的介面 起草中,可預覽
OGC MovingFeatures API 時態相關的要素資料介面,Features API 的擴展版 起草中,可預覽
OGC 3DGeoVolumes API 三維體塊資料介面,有望統一 3DTiles 和 I3S 等三維資料格式的訪問 起草中,可預覽

這幾個 API 比前面 5 個要陌生,所以額外多解釋一番:

  • OGC EDR API - 環境資料,它查詢的結果似乎并不是“空間要素”,而是各種結合了空間資訊的環境資料,例如風速、空氣溫度、濕度、體感溫度等;允許使用坐標、半徑、范圍、定位名稱等引數查詢環境資料,氣象領域、海洋領域的應用可能較廣,應該和 NetCDF 等多維資料格式的關系較為緊密

  • OGC Records API - 在設計上與 Feature API 略有重合,URL 在使用時會有重合,但在 查詢過濾的側重點可能有不同,Feature API 的查詢專注于 空間分析型過濾,而這個 API 更專注于描述性質的屬性過濾,也就是 非空間分析型過濾,例如 titleexternalIds 等;由于 Features API 的空間過濾章節規范還未發布,且 Records API 的規范也未正式發布、能體驗的例子也較少,所以一切以正式為準

  • OGC DGGS API - DGGS,即 Discrete Global Grid Systems,它使用比四叉樹更一般化的網格劃分地球球面,有一些研究在這種特殊的網格幾何形狀上進行,它一般和 Features API、Processes API 一起使用,畢竟網格也是一種特殊的要素;只不過在 API 的設計上更加傾向于這些“網格”,靜等實作

  • OGC Routes API - 類似 pgRouting 的一種規范,在資料介面層面實作了統一,你可以拿來查詢路由(理解為有去由、有方向的路徑),回傳的是矢量要素,也可以呼叫與之配套的 Processes API 進行網路分析(最短路徑等),這個 API 比較硬核,通常是服務端的實作比較重

  • OGC Joins API - 空間連接,使得已有的要素資料與新提供的資料能產生連接關系,熟悉后端資料庫、ArcGIS 屬性表連接等相關操作的應該能大致猜出來這個 API 是干什么的,是一種偏行為型的 API,與 Features API 一起使用,不過當前這個 API 的行程比較緩慢,還沒有具體的實作

  • OGC MovingFeatures API - 是與時間相關矢量要素 API,與 Features API 一起使用,目前尚未看到實作,我認為這也是一個非常考驗后端資料庫組織能力的 API

  • OGC 3DGeoVolumes API - 目的很簡單,將各家的三維資料標準統一到一起,目前還沒什么內容,但開了個好頭;我認為至少把現有的幾個標準能合并在一起就很難以實作了,如果要在 API 層面使得各大 3D 資料規范統一,那將是一個非常漫長的程序;目前,社區案例中以簡單的 3DTiles 為多,且只能以 REST 介面訪問 tileset.json 檔案的 JSON 內容;這個 API 的目標很大,希望把 glTF、3DTiles、I3S、CityGML/CityJSON 等一并具備物體資料內容的格式,通過 3DGeoVolumes 的概念在空間上聚合在一起,在 API 層面做到統一,而不是重新提出一個資料規范

  • OGC Styles API - 比較容易理解,規范化了各種樣式資訊的增刪改查介面,這些樣式資訊可以用于瓦片、矢量要素的渲染;樣式型別包括但不限于 SLD、MapboxStyle 等

3. 能用 OGC API 了嗎

3.1. 各 API 實作情況(官方統計)

各個 API 在 GitHub 上基本上都是有獨立倉庫的,每個倉庫基本上都記錄了當前 API 的軟體實作情況,包括服務端軟體、前端庫、開發庫等,我挨個查閱后,將有記錄的 API 實作記錄檔案列舉如下:

  • OGC Feature API 實作串列

  • OGC Tiles API 實作串列

  • OGC Maps API 實作串列 暫時未更新,不過 GeoServer 已經實作了部分草案

  • OGC 3DGeoVolumes API 實作串列 本文發布時只有簡單的 3DTiles 靜態檔案服務,還未看到 I3S

  • OGC Coverages API 實作串列

  • OGC Processes API 實作串列

  • OGC Records API 實作串列

  • OGC Joins API 實作串列 這個 API 在文章發布時還沒有實作

  • OGC Routes API 實作串列

  • OGC Styles API 實作串列

其余尚未找到(也有可能是 OGC 還未公開其倉庫),

請注意,這些鏈接由于 OGC API 仍然在制定程序中,不保證有效性,請自行訪問對應的 GitHub 倉庫,

3.2. 前端地圖庫的實作

介紹幾個比較有名的 JavaScript 庫實作,

① ArcGIS API for JavaScript

僅在 V4 支持 OGC Feature API,使用 OGCFeatuerLayer 即可,

② OpenLayers6

目前只支持 OGC Tiles API,

  • 對于柵格瓦片,使用 ol/source/OGCMapTileol/layer/Tile 實作
  • 對于矢量瓦片(MVT格式),使用 ol/source/OGCVectorTileol/layer/VectorTile 實作

但是請注意,目前由于 OGC API 仍然不穩定,所以相關的類仍然沒有檔案,但是在官方的 Examples 中搜索 OGC 是能看到例子的,

③ LeafletJS

使用擴展支持了 OGC Map API:GitLab - Leaflet.ImageOverlay.OGCAPI

3.3. GeoServer 的實作

請參考 穩定版檔案 / 最新版檔案,簡單的說,GeoServer 在最新的 2.21 版本已經實作了 Tiles、Coverages、DGGS、Features、Images(這項是請求中的 API,官方網站上還沒有記錄,更能體現 OGC API 是一個開放的規范族)、Styles、Maps 這幾項 API,

3.4. 開發庫的支持

  • TypeScript - haoliangyu/ogcapi-js
  • JavaScript - koopjs/provider-ogcapi-features
  • Python - geopython/pygeoapi
  • C# - sam-is/OgcApi.Net
  • Rust - camptocamp/ogcapi
  • Golang - WouterVisscher/ogcapi

更多資源請到 GitHub 上搜索,

4. 試用 GeoServer 的 OGC API

目前,僅在 2.18 以上版本看到有 OGC API 的社區擴展包,

https://build.geoserver.org/geoserver/

將對應版本的社區擴展包解壓到 WEB-INF/libs/ 目錄下后(要選擇替換),重啟 GeoServer 即可在主頁右側看到已經支持的 API

image

點擊你想要進去的 API 的版本號,就可以在界面上看到對應的 API 了,

4.1. 已知 BUG

安裝 OGC API 后,GeoServer 的 WMTS 將會失效,原因未知,請勿在生產環境和有重要資料的個人 GeoServer 上實驗!!!

4.2. 試用 OGC Maps API

安裝好 OGC API 插件后,在你的瀏覽器直接訪問如下類似的 URL(注意你的埠、資料引數等):

http://localhost:4800/geoserver/ogc/maps
/collections/spatial_base:guangxi_cities
/styles/polygon
/map
?transparent=true
&f=image%2Fpng
&layers=spatial_base%3Aguangxi_cities
&styles=polygon
&crs=EPSG%3A4326
&width=768
&height=553
&bbox=104.04052734375%2C20.6048583984375%2C112.47802734375%2C26.6802978515625

回傳的是與 WMS 的 GetMap 幾乎一樣的結果:

image

除此之外,OGC Map API 也有別的操作,可以到 API 體驗頁面了解:

https://developer.ogc.org/api/maps/index.html (在 2.21 版本的 GeoServer 上還未集成本地 Swagger 供本地測驗,否則訪問 http://localhost:4800/geoserver/ogc/maps/api 即可本地測驗,其余 API 請讀者自行測驗)

4.3. 試用 OGC Tiles API

Tiles API 的模板如下:

http://localhost:4800/geoserver/ogc/tiles
/collections/{layerName}
/styles/{style}
/map/tiles
/{tileMatrixSet}/{tileMatrix}/{tileRow}/{tileCol}?f={ImageMIMEType}

所以,發起一張瓦片請求:

http://localhost:4800/geoserver/ogc/tiles
/collections/spatial_base:guangxi_cities
/styles/polygon
/map/tiles
/EPSG:900913/EPSG:900913:7/55/103?f=image/png

得到的瓦片是:

image

比對 WMTS 的 REST 風格 URL:

http://localhost:4800/geoserver/gwc/service/wmts/rest
/spatial_base:guangxi_cities
/polygon
/EPSG:900913/EPSG:900913:7/55/103?format=image/png

風格相似,升級成本較低,

4.4. 試用 OGC Features API

http://localhost:4800/geoserver/ogc/features
/collections/spatial_base:guangxi_cities
/items
&limit=5

只查單個

http://localhost:4800/geoserver/ogc/features
/collections/spatial_base:guangxi_cities
/items/guangxi_cities.1

http://localhost:4800/geoserver/ogc/features
/collections/spatial_base:guangxi_cities
/items/1

查詢單個的回傳結果:

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "id": "guangxi_cities.1",
      "geometry": {/* ... */},
      "geometry_name": "geom",
      "properties": {/* ... */}
    }
  ],
  "numberMatched": 1,
  "numberReturned": 1,
  "timeStamp": "2022-07-18T16:48:12.381Z",
  "links": [/* ... */]
}

比對 WFS 的鍵值對形式獲取簡直不要太方便,我認為 Features API 是一個非常不錯的升級,

至于 Features API 的第三部分:空間過濾,以及第四部分增刪改查(對應 WFS 中的 Transaction),還要等草案穩定和各大社區實作,

4.5. 試用 OGC Styles API

你可以直接用 API 請求工具訪問你本機上 GeoServer 提供的 Styles API,類似:

http://localhost:4800/geoserver/ogc/styles
/styles

這個雙重 styles 可能會讓人有點迷惑,即 /styles/styles,其實后面那個 styles 是 GeoServer 默認的樣式集,名字就叫“styles”,這條查詢回傳的是 GeoServer 上名為“styles”樣式集的所有樣式,

眾所周知,GeoServer 內置的樣式很丑,以內置的 polygon 樣式為例:

image

它其實是一個很簡單的 SLD 定義:

<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor version="1.0.0" 
 xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd" 
 xmlns="http://www.opengis.net/sld" 
 xmlns:ogc="http://www.opengis.net/ogc" 
 xmlns:xlink="http://www.w3.org/1999/xlink" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <!-- a Named Layer is the basic building block of an SLD document -->
  <NamedLayer>
    <Name>default_polygon</Name>
    <UserStyle>
    <!-- Styles can have names, titles and abstracts -->
      <Title>Default Polygon</Title>
      <Abstract>A sample style that draws a polygon</Abstract>
      <!-- FeatureTypeStyles describe how to render different features -->
      <!-- A FeatureTypeStyle for rendering polygons -->
      <FeatureTypeStyle>
        <Rule>
          <Name>rule1</Name>
          <Title>Gray Polygon with Black Outline</Title>
          <Abstract>A polygon with a gray fill and a 1 pixel black outline</Abstract>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#AAAAAA</CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke">#000000</CssParameter>
              <CssParameter name="stroke-width">1</CssParameter>
            </Stroke>
          </PolygonSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

SLD 實際上是一種 XML,是有規范的,上述這份 SLD,你可以這樣請求得到:

http://localhost:4800/geoserver/ogc/styles
/styles/polygon

樣式 API 其實算是比較簡單的一個,包括其增刪改查,點到為止,

5. 小結

OGC API 綜合看下來,各行各業,方方面面,基本上都有考慮到,而且十分專注地在討論“地理空間”,即使是來自偏研究領域的 DGGS APIEDR API,仍然認認真真地在寫技術規范、參與討論、實作 OpenAPI 的例子,積極與既有技術合并或直接提供實作的簡單案例,而不是國內虛無縹緲的概念,

哀嚎,行業究竟在干什么?沙難聚成塔呀...

其實,對于開發者而言,API 的作用就是請求,OGC API 為開發者或呼叫者做了約束,大多數地圖庫并不需要完全支持所有的 OGC API,譬如 Feature API 就不需要 —— 正如同 WFS 于 CesiumJS/MapboxGL 一樣,你需要矢量要素資料,你也知道有個 Features API 的資料源,你就照著規范請求矢量資料就好了,況且,或受制于技術水平,或受制于業務范圍,有的介面可能在應用程序中是完全不需要或者實作不了的,比如 Joins APIRoutes API 等,只能等待社區給出封裝成果,

我認為客戶端可能需要接入的是 Tile API 或者 Map API,畢竟前端原生支持或擴展支持服務提供出來的地圖、瓦片才像是一個地圖庫,

而像 Routes APIJoins APIMovingFeatures API 這幾個對后端資料庫、演算法程式要求比較高的,就需要掂量掂量自己的斤兩,看看是等著用別人的成果,還是硬著頭皮自己實作了,

不過話說回來,2020 年到現在也才正式公布了寥寥幾個 API 的基礎部分,等待這套 API 完全發布、落實,我認為靠這行吃飯的朋友,如果沒有撬動國內整個行情的力量,還是老老實實用現有成果的好,科研隊伍反而更有空跟進了解,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/499815.html

標籤:GIS

上一篇:Vue中關于this指向的問題

下一篇:京準電鐘北斗時鐘服務器,GPS網路時間服務器,NTP衛星授時系統

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • 使用Django Rest framework搭建Blog

    在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

    uj5u.com 2023-04-20 08:17:54 more
  • 記錄-new Date() 我忍你很久了!

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

    uj5u.com 2023-04-20 08:17:47 more
  • 使用Vue.js實作文字跑馬燈效果

    實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

    uj5u.com 2023-04-20 08:12:31 more
  • JavaScript 運算子

    JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

    uj5u.com 2023-04-20 08:02:25 more
  • CSS—相對單位rem

    一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

    uj5u.com 2023-04-20 08:02:21 more
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 08:01:50 more
  • 如何在 vue3 中使用 jsx/tsx?

    我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

    uj5u.com 2023-04-20 08:01:37 more
  • 【Vue2.x原始碼系列06】計算屬性computed原理

    本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

    uj5u.com 2023-04-20 08:01:31 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:01:10 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:00:32 more