Find

Discussion
· Apr 24

What is the best way to output JSON data in a REST API GET request?

Hi devs!

What is the best way to return JSON in IRIS for a GET request in a REST app?

This is how I do it now:

ClassMethod GetAllPersons() As %Stream.Object
{
    d ..%SetContentType("application/json")
    Set rset = ##class(dc.Sample.Person).ExtentFunc()

    set stream=##class(%Stream.TmpCharacter).%New()
    d stream.Write("[")
    if rset.%Next() {
        Set person = ##class(dc.Sample.Person).%OpenId(rset.ID)
        Do person.%JSONExportToStream(.stream)
    }
    While rset.%Next() {
        d stream.Write(",")
        Set person = ##class(dc.Sample.Person).%OpenId(rset.ID)
        Do person.%JSONExportToStream(.stream)
    }
    d stream.Write("]")
    return stream
}

The query is used vs the following persistent class:

Class dc.Sample.Person Extends (%Persistent, %JSON.Adaptor, %Populate)

{



Property Name As %VarString;



Property Title As %String;



Property Company As %String;



Property Phone As %VarString;



Property DOB As %Date(MAXVAL = "$piece($horolog, "","", 1)");



Property PersonId As %Integer [ Calculated, SqlComputeCode = { set {*}={%%ID}}, SqlComputed ];



/// Index for property DOB

Index DOBIndex On DOB;



ClassMethod AddTestData(amount As %Integer = 10)

{

d ..Populate(amount)

}

}

What I don't like:

1. "Unnecessary" "manual" writes of "[]":

d stream.Write("[")

2. Code block repeat for the first segment to excuse "," :


    if rset.%Next() {
        Set person = ##class(dc.Sample.Person).%OpenId(rset.ID)
        Do person.%JSONExportToStream(.stream)
    }
    While rset.%Next() {
        d stream.Write(",")
        Set person = ##class(dc.Sample.Person).%OpenId(rset.ID)
        Do person.%JSONExportToStream(.stream)
    }

3. I should introduce an "artificial" PersonId to make the response include record ID's (thanks to @Robert Cemper):

Property PersonId As %Integer [ Calculated, SqlComputeCode = { set {*}={%%ID}}, SqlComputed ];

Your ideas?

8 Comments
Discussion (8)2
Log in or sign up to continue
InterSystems Official
· Apr 24

Las versiones de mantenimiento 2024.1.4 y 2023.1.6 de InterSystems IRIS, IRIS for Health y HealthShare HealthConnect ya están disponibles

Las versiones de mantenimiento 2024.1.4 y 2023.1.6 de la plataforma de datos InterSystems IRIS®, InterSystems IRIS® for Health™ y HealthShare® Health Connect ya están disponibles de forma general (GA). Estas versiones incluyen las correcciones para la siguiente alerta emitida recientemente: Alerta: Consultas SQL que devuelven resultados incorrectos | InterSystems. Por favor, compartid vuestros comentarios a través de la Comunidad de Desarrolladores para que podamos construir un mejor producto juntos.

Documentación

Podéis encontrar las listas detalladas de cambios y las listas de comprobación para la actualización en estas páginas:

Programas de Acceso Anticipado (EAPs)

Hay muchos Programas de Acceso Anticipado (EAPs) disponibles ahora. Echad un vistazo a esta página y registraos en aquellos que os interesen.

¿Cómo conseguir el software?

Los paquetes de instalación completos tanto para InterSystems IRIS como para InterSystems IRIS for Health están disponibles en la página InterSystems IRIS Data Platform Full Kits del WRC. Los kits de HealthShare Health Connect están disponibles en la página HealthShare Full Kits del WRC. Las imágenes de contenedor están disponibles en el InterSystems Container Registry.

Disponibilidad e información sobre los paquetes

Esta versión incluye paquetes de instalación clásicos para todas las plataformas compatibles, así como imágenes de contenedor en formato Docker. Para consultar la lista completa, dirigíos al documento de Plataformas Compatibles. Los números de compilación de estas versiones de mantenimiento son: 2024.1.4.512.0 y 2023.1.6.809.0.

Discussion (0)1
Log in or sign up to continue
Announcement
· Apr 24

Programme d'accès anticipé : améliorations OAuth2

InterSystems IRIS 2025.2.0 introduit plusieurs fonctionnalités pour améliorer l'expérience utilisateur lors de la configuration d'OAuth2.

- OAuth2 est désormais un type d'authentification natif et peut être facilement activé pour vos services et applications web. Auparavant, OAuth2 était un type d'authentification déléguée.

- Vous pouvez désormais créer des serveurs de ressources avec la nouvelle classe OAuth2.ResourceServer, qui simplifie considérablement la configuration des serveurs de ressources. Auparavant, les serveurs de ressources étaient des instances d'OAuth2.Client.

- La classe OAuth2.ResourceServer fournit un exemple d'authentificateur pour déterminer les autorisations utilisateur. Pour les configurations simples, aucun code personnalisé n'est requis (auparavant, une implémentation ZAUTHENTICATE personnalisée était nécessaire). Cet authentificateur simple peut être étendu et personnalisé pour s'adapter à votre environnement. OAuth2.ResourceServer prend en charge plusieurs audiences.

- Vous pouvez désormais utiliser JDBC et ODBC pour vous authentifier auprès d'InterSystems IRIS avec des jetons d'accès.

Nous souhaitons connaître votre avis sur ces modifications et savoir si elles fonctionnent comme prévu.

Vous pouvez télécharger le logiciel et la nouvelle documentation relative à ces nouvelles fonctionnalités en utilisant ce lien.

Pour nous faire part de vos commentaires, veuillez utiliser cette adresse comme principale adresse de communication en vous rendant sur la page EAP et en sélectionnant le bouton de commentaires à droite.

Discussion (0)0
Log in or sign up to continue
Question
· Apr 24

Repositorio propio de IPM

Hola!

Recientemente he estado probando a crear nuestro propio repositorio de paquetes con IPM. He podido crearlo sin problemas, y he visto que, al final, nuestro repositorio IPM no deja de ser una instancia de IRIS. En el ejemplo del que he partido, utiliza la versión community. Y mi pregunta es,  para tener nuestro repositorio disponible para toda la compañía, ¿podemos seguir con la versión community, o debe ser una versión enterprise con licencia?

Y ya que estoy, ¿hay alguna forma de saber qué paquetes se han descargado, y por quién?

Muchas gracias!

5 Comments
Discussion (5)1
Log in or sign up to continue
Announcement
· Apr 24

インターシステムズ 第21回 開発者向けウェビナー「IRISのベクトル検索を使って テキストから画像を検索してみよう」のご案内

 

いつもお世話になっております。

さて今年二回目となる開発者向けウェビナーの日時、内容が決まりました。

【日時】 6月10日(火) 13:30-14:00

【タイトル】 IRISのベクトル検索を使ってテキストから画像を検索してみよう

【概要】

昨年5月のウェビナーで紹介したIRISのベクトル検索が、2025.1でパワーアップしました。特に、ANN(近似最近傍探索)インデックスのサポートにより、大量のベクトルに対する検索性能が劇的に向上しました。前回のウェビナーではテキストに対するベクトル検索を取り上げましたが、CLIPと呼ばれる技術により、画像とテキストを比較可能なベクトルに変換して、例えば、テキストから画像を検索するといったことが可能になります。

本ウェビナーでは、IRISのベクトル検索について再度説明し、画像とテキストを組み合わせた検索シナリオについて説明します。

【こんな方にお勧め】 機械学習に興味がある方。テキストの検索、画像の検索に興味がある方。

ご多用中とは存じますが、皆様のご参加をお待ち申し上げております。

ご登録はこちらから

インターシステムズジャパン

Discussion (0)1
Log in or sign up to continue