patorg-web-api-js
v2.5.2
Published
Docs: [http://pbgweb1.patorg.org/docs/patorg-web-api-js/](http://pbgweb1.patorg.org/docs/patorg-web-api-js/)\ Code: [https://gitlab.patorg.de/dev/patorg-web-api-js](https://gitlab.patorg.de/dev/patorg-web-api-js)
Downloads
18
Readme
PatOrg Web API JS
Docs: http://pbgweb1.patorg.org/docs/patorg-web-api-js/
Code: https://gitlab.patorg.de/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
Webpack-Warnung für Polyfill unterdrücken
Für die Nutzung von TextEncoder
und TextDecoder
in utils.ts musste eine Polyfill-Lösung für Node.js integriert werden.
In einem Projekt mit Webpack wirst du dann so eine Meldung erhalten:
WARNING in ./node_modules/patorg-web-api-js/dist/utils.js 13:15-30
Module not found: Error: Can't resolve 'util' in 'C:\projects\florence\Florence2\node_modules\patorg-web-api-js\dist'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "util": require.resolve("util/") }'
- install 'util'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "util": false }
Wie in der Meldung vorgeschlagen, kannst du in der webpack.config.js angeben, dass kein Fallback für Node.js's util
genutzt werden soll:
module.exports = {
// ...
resolve: {
// ...
fallback: {
util: false
}
}
// ...
}