patorg-web-api-js v2.5.0
PatOrg Web API JS
Docs: http://pbgweb1.patorg.org/docs/patorg-web-api-js/\ Code: https://pbggitlab1.patorg.org/dev/patorg-web-api-js
Hilfreiche Funktionen zum Arbeiten mit der PatOrg Web API mit JavaScript.
Installation
npm i patorg-web-api-js
Migration von v1 auf v2
Im Code selbst gibt es keine signifikanten Breaking Changes. Es ändert sich aber die NPM-Registry von GitLab auf das öffentliche NPM. Damit ändert sich auch der Paketname von @bsw/patorg-web-api-js
auf patorg-web-api-js
.
Migrations-Guide
- Deinstalliere das alte Paket:
npm uninstall @bsw/patorg-web-api-js
- Lösche die Zeile mit
@bsw
aus der.npmrc
-Datei in deinem Projekt. Wenn es der einzige Eintrag war, kannst du die Datei auch löschen. - Aktiviere wieder strengeres SSL:
npm config set strict-ssl true
- Installiere das Paket:
npm i patorg-web-api-js@latest
- Ersetze im Code alle Importe von
@bsw/patorg-web-api-js
aufpatorg-web-api-js
.
Neues Release erzeugen
Lokal
- Setze die neue Version in
package.json
. npm run release
- Das erzeugt nen neuen Build, lädt neues Paket nach NPM hoch und deployt die neue Doku. Stelle sicher, dass du lokal mit einem berechtigten NPM-Account angemeldet bist und dass fürpublish-docs.js
die richtigen Umgebungsvariablen gesetzt hast.- Committe und pushe deine Änderungen durch Git.
Über GitLab CI/CD (veraltet)
Diese Methode funktioniert wahrscheinlich mit Umstellung auf öffentliche NPM-Registry nicht mehr. Benutze die obere Methode.
Erstelle einen neuen Commit und setze als Commit-Nachricht-Titel die neue Version. Z.B.:
git commit -m "1.0.1"
git push
Anschließend startet das CI/CD von GitLab. Es wird ein neues NPM-Paket veröffentlicht und die Doku-Seite wird neu deployt.
Benutzung
import { setBaseUrl, auth, fetchApi } from "patorg-web-api-js"
// 1. Basis-URL setzen. Muss einmalig ausgeführt werden.
setBaseUrl("http://pbgbuild6/api")
async function main() {
// 2. Authentifizierung
await auth("LGK", "PBG", "lgk")
// 3. Akte lesen
const record = await fetchApi("read", { params: "context=P6.AKTE&id=PPP" })
}
main()
React
React-Komponenten befinden sich im Unterordner patorg-web-api-js/dist/react
.
Binde PowapiProvider
in deine Root-Komponente ein und setze die baseUrl
:
import { StrictMode } from "react"
import { createRoot } from "react-dom/client"
import App from "./App"
import PowapiProvider from "patorg-web-api-js/dist/react/PowapiProvider"
const root = createRoot(document.getElementById("root")!)
root.render(
<StrictMode>
<PowapiProvider baseUrl="http://pbgbuild6/api">
<App />
</PowapiProvider>
</StrictMode>
)
Nutze den Hook usePowapi()
und setze beim Anmeldevorgang den AccessToken:
import { Page, Header, HeaderTitle, Body } from "blue-react"
import { appLogo, appTitle, getPhrase } from "../shared"
import usePowapi from "patorg-web-api-js/dist/react/usePowapi"
import { auth, fetchApi } from "patorg-web-api-js"
export default function HomePage() {
const { setToken } = usePowapi()
const login = async () => {
const token = await auth("LGK", "PBG", "lgk")
setToken(token)
}
const readRecord = async () => {
const record = await fetchApi("read", { params: "context=P6.AKTE&id=PPP" })
console.log(record)
}
return (
<Page>
<Header>
<HeaderTitle logo={appLogo} appTitle={appTitle}>
{getPhrase("HELLO_WORLD")}
</HeaderTitle>
</Header>
<Body containerClass="container">
<button type="button" className="btn btn-primary" onClick={login}>
Log in
</button>
<button type="button" className="btn btn-primary" onClick={readRecord}>
Read record
</button>
</Body>
</Page>
)
}
PowapiProvider
hat die Komponente RefreshAccessToken
eingebunden, die dafür sorgt, dass der AccessToken im Hintergrund rechtzeitig vor Ablauf erneuert wird.
Props zu PowapiProvider